---
title: "Correct an existing shipment (add sent items) by carrier and tracking number."
method: POST
path: "/v1/shipments/carriers/{carrier}/trackingnumbers/{trackingNumber}/positionitems"
tags: ["Shipments V1"]
---

# Correct an existing shipment (add sent items) by carrier and tracking number.

`POST /v1/shipments/carriers/{carrier}/trackingnumbers/{trackingNumber}/positionitems`

## Request

- Base URL: `https://api.otto.market`
- URL: `https://api.otto.market/v1/shipments/carriers/{carrier}/trackingnumbers/{trackingNumber}/positionitems`
- Auth: HTTP bearer

This endpoint allows to update an existing shipment with new position items.

## Path parameters

- `carrier` 'DHL' | 'DHL_EXPRESS' | 'DPD' | 'GLS' | 'HERMES' | 'UPS' | 'ABIKS' | 'AJ' | 'AJE' | 'BTW' | 'BURSPED' | 'CARGOLINE' | 'CARGOBOARD' | 'CTL' | 'DACHSER' | 'DB_SCHENKER' | 'DHL_FREIGHT' | 'DHL_HOME_DELIVERY' | 'DHL_2_MANN_HANDLING' | 'DSV' | 'ECE' | 'EMONS' | 'EPH_DIREKT' | 'FEDEX' | 'FROEDE' | 'GEIS' | 'GEL' | 'GRASSL' | 'GUETTLER' | 'HASENAUER' | 'HEPPNER' | 'HELLMANN' | 'HES' | 'HEUEL' | 'IDS' | 'ISG' | 'KIESSLING' | 'KOCH' | 'KUEHNE_NAGEL' | 'LOGWIN' | 'LOOKWAY' | 'MEYER_JUMBO' | 'MIRJAN' | 'ORCARGO' | 'PALLETWAYS' | 'PEISKER' | 'RABEN_LOGISTIK' | 'REIMER' | 'REITHMEIER' | 'RHENUS' | 'RIECK' | 'SCHMIDT_GEVELSBERG' | 'SCHOCKEMOEHLE' | 'SIEVERS' | 'SIMPLE_LOGISTIK' | 'SPEEDTRANS' | 'SPT' | 'VERHOEK' | 'WEISS' | 'ZUFALL' | 'OTHER_FORWARDER', required
- `trackingNumber` string, required

## Request body

- PositionItemShipmentsV1[]
  - `positionItemId` string, uuid, required: The ID of a position item of the sales order from the OTTO Market, as defined in the Order API.
  - `salesOrderId` string, uuid, required: The ID of the sales order from the OTTO Market, as defined in the Order API.
  - `returnTrackingKey` ReturnTrackingKeyShipmentsV1, required: The return tracking key for the return process. <br> **Required for parcel deliveries.** <br> **Optional for forwarder deliveries.** <br> Each position item can have its own return tracking key.
    - `carrier` 'DHL' | 'GLS' | 'HERMES', required: The carrier for the return process, which can differ from the carrier used to deliver the shipment to the customer. Please be aware that this carrier can not differ from the chosen carrier in the OPC portal.
    - `trackingNumber` string, required: The tracking number (or return tracking number) assigned by the carrier.
  - `returnAddressCarrierId` string, uuid: Unique identifier for the return address and the return carrier combination. A returnAddressCarrierId is required when a partner has multiple return addresses/carriers. This identifier can be obtained through the ReturnsWarehouse API or in the Partner-Portal. Note that all position items within the same shipment must have the same returnAddressCarrierId.

## Response `200`

OK

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `404`: Not Found
- `409`: Conflict
- `500`: Internal Server Error

## Changes

- **2026-10-02** `29ca75cdb016`: 1 info
  - added the new enum value `LOOKWAY` to the `path` request parameter `carrier`
- **2026-09-10** `3d020f15ab4d`: 1 info
  - added the new enum value `DHL_2_MANN_HANDLING` to the `path` request parameter `carrier`
- **2026-09-01** `b1bc133112bd`: 24 info
  - added the new enum value `ABIKS` to the `path` request parameter `carrier`
  - added the new enum value `AJ` to the `path` request parameter `carrier`
  - added the new enum value `AJE` to the `path` request parameter `carrier`
  - added the new enum value `CARGOBOARD` to the `path` request parameter `carrier`
  - …20 more

[Operation history](https://skmtc.dev/otto/apis/otto-market-api/changes/v1/shipments/carriers/:carrier/trackingnumbers/:trackingNumber/positionitems/post.md)

---

[API](https://skmtc.dev/otto/apis/otto-market-api.md) - [All operations](https://skmtc.dev/otto/apis/otto-market-api/llms.txt) - [OpenAPI document](https://skmtc.dev/otto/apis/otto-market-api/revisions/cc8a74b62e87?raw)
