API reference

Account

Who the key acts as, the account's people, search and dashboard figures.

Current account

GET /v1/active-organization

The account calls are made for. Everything else (shipments, wallet, addresses…) belongs to this account.

Response in data

  • activeOrganizationId • Required uuid
GET /v1/active-organization
curl "https://api.parcelhub.ca/v1/active-organization" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": {
    "activeOrganizationId": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f"
  },
  "request_id": "01JBX7Q2…"
}

Dashboard figures

GET /v1/dashboard/insights

Shipment counts, spend, savings and delivery performance over a period, with points for charts.

Query parameters

  • range string

    30d (default, daily points), 90d (weekly) or 12m (monthly).

Response in data

  • bucket • Required string
  • cities • Required array of objects
    Each item · 4
    • city • Required string

      City.

    • country • Required string

      Two-letter country code, e.g. CA, US.

    • region • Required string
    • shipments • Required integer
  • current • Required object
    Fields · 18
    • avg_options • Required number
    • avg_transit_days • Required number
    • compare_labels • Required integer
    • compare_saved_cents • Required integer
    • delivered • Required integer
    • domestic • Required integer
    • exceptions • Required integer
    • international • Required integer
    • on_time • Required integer
    • on_time_measured • Required integer
    • quoted_labels • Required integer
    • retail_labels • Required integer
    • retail_saved_cents • Required integer
    • saved_cents • Required integer
    • shipments • Required integer
    • spend_cents • Required integer
    • transit_measured • Required integer
    • usa • Required integer
  • from • Required date

    Ship-from address.

  • lifetime • Required object
    Fields · 18
    • avg_options • Required number
    • avg_transit_days • Required number
    • compare_labels • Required integer
    • compare_saved_cents • Required integer
    • delivered • Required integer
    • domestic • Required integer
    • exceptions • Required integer
    • international • Required integer
    • on_time • Required integer
    • on_time_measured • Required integer
    • quoted_labels • Required integer
    • retail_labels • Required integer
    • retail_saved_cents • Required integer
    • saved_cents • Required integer
    • shipments • Required integer
    • spend_cents • Required integer
    • transit_measured • Required integer
    • usa • Required integer
  • month • Required object
    Fields · 4
    • days_elapsed • Required integer
    • days_in_month • Required integer
    • shipments • Required integer
    • spend_cents • Required integer
  • previous • Required object
    Fields · 18
    • avg_options • Required number
    • avg_transit_days • Required number
    • compare_labels • Required integer
    • compare_saved_cents • Required integer
    • delivered • Required integer
    • domestic • Required integer
    • exceptions • Required integer
    • international • Required integer
    • on_time • Required integer
    • on_time_measured • Required integer
    • quoted_labels • Required integer
    • retail_labels • Required integer
    • retail_saved_cents • Required integer
    • saved_cents • Required integer
    • shipments • Required integer
    • spend_cents • Required integer
    • transit_measured • Required integer
    • usa • Required integer
  • range • Required string
  • regions • Required array of objects
    Each item · 4
    • country • Required string

      Two-letter country code, e.g. CA, US.

    • region • Required string
    • shipments • Required integer
    • spend_cents • Required integer
  • series • Required array of objects
    Each item · 4
    • date • Required date
    • saved_cents • Required integer
    • shipments • Required integer
    • spend_cents • Required integer
  • services • Required array of objects
    Each item · 9
    • carrier • Required string

      Carrier code, as returned with each rate.

    • on_time • Required integer
    • on_time_measured • Required integer
    • saved_cents • Required integer
    • service • Required string
    • shipments • Required integer
    • spend_cents • Required integer
    • transit_days_sum • Required integer
    • transit_measured • Required integer
  • to • Required date

    Ship-to address.

  • transit • Required array of objects
    Each item · 2
    • count • Required integer
    • key • Required integer
  • weekdays • Required array of objects
    Each item · 2
    • count • Required integer
    • key • Required integer
  • weight_bands_kg • Required array of numbers
  • weights • Required array of objects
    Each item · 2
    • count • Required integer
    • key • Required integer
  • best_saving object
    Fields · 8
    • carrier • Required string

      Carrier code, as returned with each rate.

    • kind • Required string
    • reference_cents • Required integer
    • saved_cents • Required integer
    • service • Required string
    • shipment_id • Required uuid
    • to_city • Required string
    • to_state • Required string
GET /v1/dashboard/insights
curl "https://api.parcelhub.ca/v1/dashboard/insights" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": {
    "best_saving": {
      "carrier": "ups",
      "kind": "string",
      "reference_cents": 1299,
      "saved_cents": 1299,
      "service": "string",
      "shipment_id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
      "to_city": "string",
      "to_state": "string"
    },
    "bucket": "string",
    "cities": [
      {
        "city": "Toronto",
        "country": "CA",
        "region": "string",
        "shipments": 1
      }
    ],
    "current": {
      "avg_options": 1.5,
      "avg_transit_days": 1.5,
      "compare_labels": 1,
      "compare_saved_cents": 1299,
      "delivered": 1,
      "domestic": 1,
      "exceptions": 1,
      "international": 1,
      "on_time": 1,
      "on_time_measured": 1,
      "quoted_labels": 1,
      "retail_labels": 1,
      "retail_saved_cents": 1299,
      "saved_cents": 1299,
      "shipments": 1,
      "spend_cents": 1299,
      "transit_measured": 1,
      "usa": 1
    },
    "from": "2026-11-03",
    "lifetime": {
      "avg_options": 1.5,
      "avg_transit_days": 1.5,
      "compare_labels": 1,
      "compare_saved_cents": 1299,
      "delivered": 1,
      "domestic": 1,
      "exceptions": 1,
      "international": 1,
      "on_time": 1,
      "on_time_measured": 1,
      "quoted_labels": 1,
      "retail_labels": 1,
      "retail_saved_cents": 1299,
      "saved_cents": 1299,
      "shipments": 1,
      "spend_cents": 1299,
      "transit_measured": 1,
      "usa": 1
    },
    "month": {
      "days_elapsed": 1,
      "days_in_month": 1,
      "shipments": 1,
      "spend_cents": 1299
    },
    "previous": {
      "avg_options": 1.5,
      "avg_transit_days": 1.5,
      "compare_labels": 1,
      "compare_saved_cents": 1299,
      "delivered": 1,
      "domestic": 1,
      "exceptions": 1,
      "international": 1,
      "on_time": 1,
      "on_time_measured": 1,
      "quoted_labels": 1,
      "retail_labels": 1,
      "retail_saved_cents": 1299,
      "saved_cents": 1299,
      "shipments": 1,
      "spend_cents": 1299,
      "transit_measured": 1,
      "usa": 1
    },
    "range": "string",
    "regions": [
      {
        "country": "CA",
        "region": "string",
        "shipments": 1,
        "spend_cents": 1299
      }
    ],
    "series": [
      {
        "date": "2026-11-03",
        "saved_cents": 1299,
        "shipments": 1,
        "spend_cents": 1299
      }
    ],
    "services": [
      {
        "carrier": "ups",
        "on_time": 1,
        "on_time_measured": 1,
        "saved_cents": 1299,
        "service": "string",
        "shipments": 1,
        "spend_cents": 1299,
        "transit_days_sum": 1,
        "transit_measured": 1
      }
    ],
    "to": "2026-11-03",
    "transit": [
      {
        "count": 1,
        "key": 1
      }
    ],
    "weekdays": [
      {
        "count": 1,
        "key": 1
      }
    ],
    "weight_bands_kg": [
      1.5
    ],
    "weights": [
      {
        "count": 1,
        "key": 1
      }
    ]
  },
  "request_id": "01JBX7Q2…"
}

List pending invites

GET /v1/organization/invites

Invitations to join the current account that have not been accepted yet.

Response in data

  • email • Required string

    Email address.

  • expiresAt • Required string
  • id • Required uuid
  • inviteNumber • Required string
  • role • Required string
  • status • Required string
GET /v1/organization/invites
curl "https://api.parcelhub.ca/v1/organization/invites" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": [
    {
      "email": "[email protected]",
      "expiresAt": "string",
      "id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
      "inviteNumber": "string",
      "role": "string",
      "status": "string"
    }
  ],
  "request_id": "01JBX7Q2…"
}

List members

GET /v1/organization/members

People on the current account and their roles.

Response in data

  • joinedAt • Required string
  • name • Required string
  • role • Required string
  • userId • Required uuid
  • email string

    Email address.

GET /v1/organization/members
curl "https://api.parcelhub.ca/v1/organization/members" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": [
    {
      "email": "[email protected]",
      "joinedAt": "string",
      "name": "Alex Martin",
      "role": "string",
      "userId": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f"
    }
  ],
  "request_id": "01JBX7Q2…"
}

List accounts

GET /v1/organizations

Every ParcelHub account (personal and business) the person belongs to, with their role in each.

Response in data

  • externalId • Required string
  • id • Required uuid
  • isPersonal • Required boolean
  • name • Required string
  • role • Required string
  • status • Required string
  • systemPaid • Required boolean
  • businessStatus string
  • deletionScheduledFor string
GET /v1/organizations
curl "https://api.parcelhub.ca/v1/organizations" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": [
    {
      "businessStatus": "string",
      "deletionScheduledFor": "string",
      "externalId": "string",
      "id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
      "isPersonal": true,
      "name": "Alex Martin",
      "role": "string",
      "status": "string",
      "systemPaid": true
    }
  ],
  "request_id": "01JBX7Q2…"
}

Account overview

GET /v1/overview

The signed-in person, the account (organization) the key acts for, and headline counts.

Response in data

  • description • Required string
  • scope • Required string
GET /v1/overview
curl "https://api.parcelhub.ca/v1/overview" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": {
    "description": "string",
    "scope": "string"
  },
  "request_id": "01JBX7Q2…"
}

Profile

GET /v1/profile

Name, contact details and email addresses of the person the key belongs to. Profile changes are made in the dashboard, not with an API key.

Response in data

  • emails • Required array of objects
    Each item · 4
    • email • Required string

      Email address.

    • id • Required uuid
    • isPrimary • Required boolean
    • isVerified • Required boolean
  • id • Required uuid
  • name • Required string
  • pickupMapViewEnabled • Required boolean
  • referralsEnabled • Required boolean
  • shipmentMapViewEnabled • Required boolean
  • avatarUrl string
  • clientNumber string
  • email string

    Email address.

GET /v1/profile
curl "https://api.parcelhub.ca/v1/profile" \
  -H "Authorization: Bearer $TOKEN"
Response
{
  "ok": true,
  "data": {
    "avatarUrl": "string",
    "clientNumber": "string",
    "email": "[email protected]",
    "emails": [
      {
        "email": "[email protected]",
        "id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
        "isPrimary": true,
        "isVerified": true
      }
    ],
    "id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
    "name": "Alex Martin",
    "pickupMapViewEnabled": true,
    "referralsEnabled": true,
    "shipmentMapViewEnabled": true
  },
  "request_id": "01JBX7Q2…"
}