Skip to content
Last updated

Explicit vs Implicit Manifests

If your carrier requires a physical manifest, you will need to send a request to ShipStation API to create it. You can send a request with a list of specific labels to include in an explicit manifest.

Alternately, you can include filter criteria in your request and allow ShipStation API to determine the exact list of labels to include in an implicit manifest, including a property that allows you to exclude labels from the manifest even if they meet the filter criteria.

Explicit Manifests

One way to create manifests in ShipStation API is to explicitly specify which labels to include in the manifest.

To create an explicit manifest, you only need to set a single field:

Field NameTypeRequired?Description
label_idsarray of stringsyesUse this to specify the labels that you want to include in the manifest.
You may specify up to 500 labels in a single manifest.

INFO: When using the label_ids property, you no longer need to specify carrier_id, warhouse_id, or ship_date in the request.

Example Request

POST /v1/manifests HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json

{
  "label_ids": ["se-29602037", "se-29544722", "se-29475869"]
}

Example Response

Notice that the response includes an array of manifests. The request may return more than one manifest. Each manifest contains an href property containing a URL where the manifest can be downloaded. There is also a top-level href property that will contain the URL for the first manifest if more than one is returned.

{
  "manifests": [
    {
      "manifest_id": "se-11118",
      "form_id": "se-11118",
      "created_at": "2020-11-09T18:21:10.59Z",
      "ship_date": "2020-11-09T00:00:00Z",
      "shipments": 3,
      "label_ids": [
        "se-29602037",
        "se-29544722",
        "se-29475869"
      ],
      "warehouse_id": null,
      "submission_id": "1120014041604946070483",
      "carrier_id": "se-88270",
      "manifest_download": {
        "href": "https://api-stage.shipengine.com/v1/downloads/0/pj37Bb5hi0qdslHc7_wCVQ/manifest-11118.pdf"
      }
    }
  ],
  "request_id": "7de36d42-8343-4247-95ce-153d8b615d1f",
  "errors": [],
  "manifest_id": "se-11118",
  "form_id": "se-11118",
  "created_at": "2020-11-09T18:21:10.59Z",
  "ship_date": "2020-11-09T00:00:00Z",
  "shipments": 1,
  "label_ids": [
    "se-29602037",
    "se-29544722",
    "se-29475869"
  ],
  "warehouse_id": null,
  "submission_id": "1120014041604946070483",
  "carrier_id": "se-88270",
  "manifest_download": {
    "href": "https://api-stage.shipengine.com/v1/downloads/0/pj37Bb5hi0qdslHc7_wCVQ/manifest-11118.pdf"
  }
}

Example Response with Multiple Manifests

This response includes two manifest objects. ShipStation API will automatically split your labels across multiple manifests if you have more than 500 labels in the request or if the specified label_ids span multiple carriers, warehouses, or ship dates.

For example, if you specify label_ids for USPS and FedEx for the same warehouse and ship date, ShipStation API will return two manifests - one for USPS labels with the specified warehouse and ship date and one for FedEx labels with the specified warehouse and ship date.

Each manifest object contains an href property that contains a URL where you can download a PDF version of the manifest. There is also a top-level href that includes a URL where you can download the first manifest if multiple manifests are returned. Each manifest object indicates the specific label_ids that are included in the manifest.

{
  "manifests": [
    {
      "manifest_id": "se-11116",
      "form_id": "se-11116",
      "created_at": "2020-11-09T18:16:09.793Z",
      "ship_date": "2020-11-09T00:00:00Z",
      "shipments": 1,
      "label_ids": [
        "se-1050621"
      ],
      "warehouse_id": null,
      "submission_id": "9475711201080306528571",
      "carrier_id": "se-82785",
      "manifest_download": {
        "href": "https://api-stage.shipengine.com/v1/downloads/0/mQ3QZQL6-0SLESTz43Y8vw/manifest-11116.pdf"
      }
    },
    {
      "manifest_id": "se-11117",
      "form_id": "se-11117",
      "created_at": "2020-11-09T18:16:11.233Z",
      "ship_date": "2020-11-09T00:00:00Z",
      "shipments": 1,
      "label_ids": [
        "se-1050622"
      ],
      "warehouse_id": null,
      "submission_id": "1120014041604945770433",
      "carrier_id": "se-88270",
      "manifest_download": {
        "href": "https://api-stage.shipengine.com/v1/downloads/0/5GOUrT4TRkWgygJyvJt0kA/manifest-11117.pdf"
      }
    }
  ],
  "request_id": "9367f24f-9aa6-4358-8dd7-a73bb38e8870",
  "errors": [],
  "manifest_id": "se-11116",
  "form_id": "se-11116",
  "created_at": "2020-11-09T18:16:09.793Z",
  "ship_date": "2020-11-09T00:00:00Z",
  "shipments": 1,
  "label_ids": [
    "se-1050621",
    "se-1050622"
  ],
  "warehouse_id": null,
  "submission_id": "9475711201080306528571",
  "carrier_id": "se-82785",
  "manifest_download": {
    "href": "https://api-stage.shipengine.com/v1/downloads/0/mQ3QZQL6-0SLESTz43Y8vw/manifest-11116.pdf"
  }
}

Implicit Manifests

You may also create a manifest that includes all the labels that match the specific criteria you specify in the request. Labels that do not meet the specified criteria will be excluded from the manifest.

You may specify values for one or more of the properties below. ShipStation API will create a manifest that includes all labels that match this criteria.

You can use the excluded_label_ids property to specify label IDs that should be excluded from the manifest even if they match the specified criteria.

INFO: If your criteria results in more than 500 labels, ShipStation API will automatically split your labels into multiple manifests.

PropertyDescription
carrier_idstring, required
The carrier ID you wish to create a manifest for.
This will exclude labels that do not use this specified carrier_id.
excluded_label_idsstring array
The label IDS that you do NOT wish to manifest, even if they meet the rest of the specified criteria.
warehouse_idstring, required
The Warehouse ID this manifest is being created for.
This will exclude labels that do not use the specified warehouse_id.
ship_datedate string, (ISO 8601 Standard), required
The ship date you want to include labels for. Example: 2019-07-25T15:24:46.657Z

INFO: Each ShipStation API manifest is created for a specific warehouse, so you'll need to provide the warehouse_id rather than the ship_from address. You can create a warehouse for each location that you want to create manifests for.

Example Request

POST /v1/manifests

POST /v1/manifests HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json

{
  "carrier_id": "se-123890",
  "excluded_label_ids": [],
  "warehouse_id": "se-11921",
  "ship_date": "2019-07-25T05:00:00.000Z"
}

Example Response

{
    "manifests": [
        {
            "manifest_id": "se-11119",
            "form_id": "se-11119",
            "created_at": "2020-11-09T19:59:22.837Z",
            "ship_date": "2020-11-09T00:00:00Z",
            "shipments": 3,
            "label_ids": [
                "se-1050678",
                "se-1050679",
                "se-1050680"
            ],
            "warehouse_id": "se-107273",
            "submission_id": "9475711201080306735429",
            "carrier_id": "se-82785",
            "manifest_download": {
                "href": "https://api-stage.shipengine.com/v1/downloads/0/WPZ_DNt2dUKPX4L9pOh71g/manifest-11119.pdf"
            }
        }
    ],
    "request_id": "ed87e59c-bd95-468b-a4fb-5b55e8630df9",
    "errors": [],
    "manifest_id": "se-11119",
    "form_id": "se-11119",
    "created_at": "2020-11-09T19:59:22.837Z",
    "ship_date": "2020-11-09T00:00:00Z",
    "shipments": 3,
    "label_ids": [
        "se-1050678",
        "se-1050679",
        "se-1050680"
    ],
    "warehouse_id": "se-107273",
    "submission_id": "9475711201080306735429",
    "carrier_id": "se-82785",
    "manifest_download": {
        "href": "https://api-stage.shipengine.com/v1/downloads/0/WPZ_DNt2dUKPX4L9pOh71g/manifest-11119.pdf"
    }
}

Group Labels into Multiple Manifests

If you have multiple outgoing shipments per day, you may want to group your daily labels into more than one manifest.

You can use either the label_ids property or the excluded_label_ids property to group your control which labels are included in each manifest and avoid overlap. A label should be included in only one manifest.

INFO: You may use either the label_ids property or the excluded_label_ids property but not both. If you use the excluded_label_ids property, you must also include the carrier_id, warehouse_id, and ship_date in your request.