1. Deliveries
  2. Retrieve Deliveries

Deliveries

Retrieve Deliveries

Retrieving a single delivery is pretty straightforward. You'll just use the id of delivery to get it. When you are retrieving multiple deliveries, there are additional search and filter options available.

Retrieve Delivery

GET `/v1/deliveries/:delivery`

Get a single delivery using its id.

js
fetch("https://api.packagex.io/v1/deliveries/del_czhgjrk5JaVvyATPDbyURp", {
  method: "GET",
  headers: {
    "PX-API-KEY": process.env.PX_API_KEY,
    "Content-Type": "application/json",
  },
});

List Deliveries

Example

GET `/v1/deliveries`

When you want to retrieve multiple deliveries, your data property on the result will always be an array even if you don't have any deliveries. The deliveries are returned in descending order, meaning the latest delivery that was created will be first.

js
const response = await fetch("https://api.packagex.io/v1/deliveries", {
  method: "GET",
  headers: {
    "PX-API-KEY": process.env.PX_API_KEY,
    "Content-Type": "application/json",
  },
}).then((res) => res.json());

const deliveries = response.data;
const pagination = response.pagination;

Pagination

If the has_more property on the pagination object is set to true, you know there are more deliveries in the database that have not been returned to you. The pagination object also has a page property indicating your current offset and a limit property.

By default the page is set to 1 and the limit is 25.

If we want to query for deliveries 26 - 50, we would request page 2 with a query parameter.

js
const response = await fetch("https://api.packagex.io/v1/deliveries?page=2&limit=25", {
  method: "GET",
  headers: {
    "PX-API-KEY": process.env.PX_API_KEY,
    "Content-Type": "application/json",
  },
}).then((res) => res.json());

const deliveries = response.data; //the array of deliveries 25 - 50
const pagination = response.pagination; //the pagination object

Filter

You can filter deliveries by their sudo-statuses. There are three options to select from: completed, outstanding, and exception.

You can use filters along with pagination to get more specific views of deliveries, like checking every delivery that is still in transit.

js
const response = await fetch("https://api.packagex.io/v1/shipments?filter=outstanding&page=3", {
  method: "GET",
  headers: {
    "PX-API-KEY": process.env.PX_API_KEY,
    "Content-Type": "application/json",
  },
}).then((res) => res.json());

const deliveries = response.data; //the array of deliveries 50 - 75 that are still in transit
const pagination = response.pagination; //the pagination object

There are times when filtering is not enough and you want to find a specific delivery by some other attribute. In this case, you can do a fuzzy, typo-tolerant search of every delivery in the database. Below are the delivery properties that are supported by our full text search.

  • id
  • tracking_number
  • sender.name
  • sender.phone
  • sender.email
  • sender.address.formatted_address
  • recipient.name
  • recipient.phone
  • recipient.email
  • recipient.address.formatted_address
  • metadata

To search, simply provide a string to search by using the search query param. If you want to highlight matching search results for a frontend, we provide a special property for search-returned shipment objects called _search which will have the matched text surrounded with <mark> handles.

js
const response = await fetch("https://api.packagex.io/v1/deliveries?search=jamie%jones", {
  method: "GET",
  headers: {
    "PX-API-KEY": process.env.PX_API_KEY,
    "Content-Type": "application/json",
  },
}).then((res) => res.json());

const delivery = response.data[0];
console.log(shipment._search); //Special _search property