---
title: "Update shipment"
method: PUT
path: "/api/v1/external/shipments/{shipmentId}"
tags: ["Shipments"]
---

# Update shipment

`PUT /api/v1/external/shipments/{shipmentId}`

## Request

- Base URL: `https://api.wove.com`
- URL: `https://api.wove.com/api/v1/external/shipments/{shipmentId}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/wove/apis/wove-external-api/docs/api/v1/external/shipments/:shipmentId/put.ts> (a function with typed inputs; its response is checked against the schema)

Update an existing shipment's details.

## Path parameters

- `shipmentId` string, required

## Request body

- UpdateShipmentRequest: All fields from CreateShipmentRequest are optional for updates
  - `name` string, required
  - `shipmentType` 'FCL' | 'LCL' | 'AIR' | 'LTL' | 'FTL' | 'RAIL'
  - `commodity` string
  - `carrier` string
  - `vessel` string
  - `voyage` string
  - `incoterm` string
  - `serviceType` string
  - `portOfLoading` string
  - `portOfDischarge` string
  - `placeOfReceipt` union
    - object
      - `type` 'Port', required
      - `portCode` string, required
      - `portName` string
      - `countryCode` string
    - object
      - `type` 'Airport', required
      - `airportCode` string, required
      - `airportName` string
      - `countryCode` string
    - object
      - `type` 'Door', required
      - `address1` string, required
      - `address2` string
      - `city` string, required
      - `province` string
      - `postalCode` string
      - `country` string, required
  - `placeOfDelivery` union
    - object
      - `type` 'Port', required
      - `portCode` string, required
      - `portName` string
      - `countryCode` string
    - object
      - `type` 'Airport', required
      - `airportCode` string, required
      - `airportName` string
      - `countryCode` string
    - object
      - `type` 'Door', required
      - `address1` string, required
      - `address2` string
      - `city` string, required
      - `province` string
      - `postalCode` string
      - `country` string, required
  - `referenceNumbers` ReferenceNumber[]
    - `id` string, required
    - `type` string, required: Type of reference number (booking, invoice, po, etc.)
    - `displayNumber` string, required
    - `cleanedNumber` string: Cleaned version without special characters
  - `customFields` object

## Response `200`

Shipment updated successfully

- object
  - `success` boolean
  - `data` ShipmentDetails
    - `creation` EntityCreationInfo: How the record came into existence. `user` is a person in Wove (manual); `email`, `document_upload`, `bulk_upload`, `tms_import` and `api` are Wove-created from that source; `system` is created by Wove with no further source. `null` means nothing was recorded (most records created before October 2026): treat it as unknown, not as manual.
      - `source` 'user' | 'email' | 'document_upload' | 'bulk_upload' | 'tms_import' | 'api' | 'system' | 'null', nullable
    - `emailUpdates` ShipmentEmailUpdates: Email threads whose documents updated the shipment after it was created (pre-alerts, arrival notices and the like). A thread counts once however many of its emails merged. The thread that created the shipment is not counted.
      - `threads` integer
      - `lastAt` string, date-time, nullable: The latest time one of those threads updated the shipment
    - `sync` EntitySyncInfo, nullable: The latest push of the record to your TMS (e.g. CargoWise), the same one the Sync Reports in Wove show. `null` when the record was never synced.
      - `method` 'automation' | 'manual' | 'webhook': An automation rule pushed it, a person pushed it, or a webhook did
      - `status` string
      - `syncedAt` string, date-time, nullable
      - `syncedBy` object, nullable: The person who pushed it. `null` for an automation or webhook push, and for a manual push recorded before Wove kept who made it.
        - `userId` string
        - `name` string, nullable
        - `email` string, nullable
      - `tmsReference` string, nullable: The record's reference in the TMS (for a shipment, the job it was pushed to)
    - `id` string
    - `status` 'draft' | 'pending' | 'booked' | 'in_transit' | 'delivered' | 'cancelled': Current status of the shipment
    - `name` string
    - `shipmentType` 'FCL' | 'LCL' | 'AIR' | 'LTL' | 'FTL' | 'RAIL'
    - `commodity` string
    - `portOfLoading` PortLocation
      - `portCode` string, required
      - `portName` string
      - `countryCode` string
    - `portOfDischarge` PortLocation
      - `portCode` string, required
      - `portName` string
      - `countryCode` string
    - `placeOfReceiptType` 'Port' | 'Airport' | 'Door'
    - `placeOfReceiptPort` PortLocation
      - `portCode` string, required
      - `portName` string
      - `countryCode` string
    - `placeOfReceiptAirport` AirportLocation
      - `airportCode` string, required
      - `airportName` string
      - `countryCode` string
    - `placeOfReceiptAddress` AddressLocation
      - `address1` string
      - `address2` string
      - `city` string
      - `province` string
      - `postalCode` string
      - `country` string
    - `placeOfDeliveryType` 'Port' | 'Airport' | 'Door'
    - `placeOfDeliveryPort` PortLocation
      - `portCode` string, required
      - `portName` string
      - `countryCode` string
    - `placeOfDeliveryAirport` AirportLocation
      - `airportCode` string, required
      - `airportName` string
      - `countryCode` string
    - `placeOfDeliveryAddress` AddressLocation
      - `address1` string
      - `address2` string
      - `city` string
      - `province` string
      - `postalCode` string
      - `country` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `documentCount` integer: Number of documents attached to this shipment
    - `carrier` Carrier
      - `code` string, required
      - `name` string, required
    - `vessel` string
    - `voyage` string
    - `incoterm` string
    - `serviceType` string
    - `invoiceDate` string, date-time
    - `dueDate` string, date-time
    - `issueDate` string, date-time
    - `shipmentDate` string, date-time
    - `expectedDeliveryDate` string, date-time
    - `readyDate` string, date-time
    - `dateOfSignature` string, date-time
    - `referenceNumbers` ReferenceNumber[]
      - `id` string, required
      - `type` string, required: Type of reference number (booking, invoice, po, etc.)
      - `displayNumber` string, required
      - `cleanedNumber` string: Cleaned version without special characters
    - `consigneeName` Organization: Organization/company information
      - `name` string, required: Organization name
      - `code` string, nullable: Organization code or identifier
    - `consigneeAddress` Address: Physical address
      - `street1` string, nullable: Street address line 1
      - `street2` string, nullable: Street address line 2
      - `city` string, nullable: City name
      - `state` string, nullable: State or province
      - `postalCode` string, nullable: Postal or ZIP code
      - `country` string, nullable: Country code (2-letter ISO)
    - `consigneeContactName` string, nullable
    - `consigneeContactPhone` string, nullable
    - `consigneeContactEmail` string, nullable
    - `consignorName` Organization: Organization/company information
      - `name` string, required: Organization name
      - `code` string, nullable: Organization code or identifier
    - `consignorAddress` Address: Physical address
      - `street1` string, nullable: Street address line 1
      - `street2` string, nullable: Street address line 2
      - `city` string, nullable: City name
      - `state` string, nullable: State or province
      - `postalCode` string, nullable: Postal or ZIP code
      - `country` string, nullable: Country code (2-letter ISO)
    - `consignorContactName` string, nullable
    - `consignorContactPhone` string, nullable
    - `consignorContactEmail` string, nullable
    - `notifyPartyName` Organization: Organization/company information
      - `name` string, required: Organization name
      - `code` string, nullable: Organization code or identifier
    - `notifyPartyAddress` Address: Physical address
      - `street1` string, nullable: Street address line 1
      - `street2` string, nullable: Street address line 2
      - `city` string, nullable: City name
      - `state` string, nullable: State or province
      - `postalCode` string, nullable: Postal or ZIP code
      - `country` string, nullable: Country code (2-letter ISO)
    - `notifyPartyContactName` string, nullable
    - `notifyPartyContactPhone` string, nullable
    - `notifyPartyContactEmail` string, nullable
    - `destinationAgentName` Organization: Organization/company information
      - `name` string, required: Organization name
      - `code` string, nullable: Organization code or identifier
    - `destinationAgentAddress` Address: Physical address
      - `street1` string, nullable: Street address line 1
      - `street2` string, nullable: Street address line 2
      - `city` string, nullable: City name
      - `state` string, nullable: State or province
      - `postalCode` string, nullable: Postal or ZIP code
      - `country` string, nullable: Country code (2-letter ISO)
    - `destinationAgentContactName` string, nullable
    - `destinationAgentContactPhone` string, nullable
    - `destinationAgentContactEmail` string, nullable
    - `totalWeight` number, nullable
    - `weightUnit` string, nullable
    - `totalVolume` number, nullable
    - `volumeUnit` string, nullable
    - `totalPieces` number, nullable
    - `totalPacks` number, nullable
    - `totalPacksPackageType` string, nullable
    - `totalValue` number, nullable
    - `currency` string, nullable

## Other responses

- `404`: Shipment not found

---

[API](https://skmtc.dev/wove/apis/wove-external-api.md) - [All operations](https://skmtc.dev/wove/apis/wove-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wove/apis/wove-external-api/revisions/37290e267e07?raw)
