Shipwell Shipments API

Multimodal freight shipments - the central platform resource. (confirmed)

OpenAPI Specification

shipwell-shipments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Shipwell v2 Core Carriers Shipments API
  description: 'Partial, honestly-modeled OpenAPI description of the Shipwell transportation management system (TMS) API. Shipwell is an AI-powered freight execution platform; its public documentation and full API reference live at https://docs.shipwell.com/ but the complete platform and API are enterprise and contract-gated, so exact request and response schemas are best confirmed against the live reference and an authenticated account.


    Endpoints marked "confirmed" below appear directly in Shipwell''s public docs (shipment create/list/get, shipment notes, carrier assignments, tenders, and the events list). Endpoints marked "modeled" are honestly inferred from the documented resource groups (quoting, spot-negotiations, carrier-bids, carriers, carrier-relationships, orders, purchase-orders, webhooks) and are included to represent the shape of each logical API - verify them before use.


    Base URLs. Most of the v2 Core API is served under https://api.shipwell.com/v2 with a fully separate sandbox at https://sandbox-api.shipwell.com/v2. The newer Orders API is served under the host root without the /v2 prefix (for example https://api.shipwell.com/orders). Requests are authenticated with company-scoped API keys passed in the Authorization header (the docs call this the AuthToken scheme). Production and sandbox use separate keys, and objects created in one environment cannot be manipulated from the other.'
  version: '2.0'
  contact:
    name: Shipwell
    url: https://docs.shipwell.com/
servers:
- url: https://api.shipwell.com/v2
  description: Production (v2 Core API)
- url: https://sandbox-api.shipwell.com/v2
  description: Sandbox (v2 Core API)
- url: https://api.shipwell.com
  description: Production host root (Orders API, served without the /v2 prefix)
security:
- authToken: []
tags:
- name: Shipments
  description: Multimodal freight shipments - the central platform resource. (confirmed)
paths:
  /shipments/:
    get:
      operationId: listShipments
      tags:
      - Shipments
      summary: List shipments
      description: Returns a paginated list of shipments visible to the authenticated company. (confirmed)
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: A paginated list of shipments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createShipment
      tags:
      - Shipments
      summary: Create a shipment
      description: Creates a shipment. Minimum fields include metadata, mode, equipment_type, service_level, stops (at least one pickup and one dropoff), and line_items. (confirmed)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentInput'
      responses:
        '201':
          description: The created shipment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Shipment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /shipments/{shipmentId}/:
    parameters:
    - $ref: '#/components/parameters/ShipmentId'
    get:
      operationId: getShipment
      tags:
      - Shipments
      summary: Retrieve a shipment
      description: Retrieves a single shipment by its ID. (confirmed)
      responses:
        '200':
          description: The requested shipment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Shipment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateShipment
      tags:
      - Shipments
      summary: Update a shipment
      description: Updates an existing shipment. (confirmed)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentInput'
      responses:
        '200':
          description: The updated shipment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Shipment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
  /shipments/{shipmentId}/notes/:
    parameters:
    - $ref: '#/components/parameters/ShipmentId'
    get:
      operationId: listShipmentNotes
      tags:
      - Shipments
      summary: List notes for a shipment or shipment quote
      description: Lists the notes attached to a shipment or shipment quote. (confirmed)
      responses:
        '200':
          description: A list of shipment notes.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ShipmentNote'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createShipmentNote
      tags:
      - Shipments
      summary: Create a shipment note
      description: Adds a note to a shipment. (confirmed)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentNote'
      responses:
        '201':
          description: The created shipment note.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentNote'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /shipments/tenders/{tenderId}/:
    parameters:
    - name: tenderId
      in: path
      required: true
      description: The ID of the tender.
      schema:
        type: string
    put:
      operationId: updateTender
      tags:
      - Shipments
      summary: Update a tendered shipment
      description: Updates a tendered shipment to a Shipwell company. Only valid for shipments created by posting to this endpoint. (confirmed)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The updated tender.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Stop:
      type: object
      properties:
        ordinal_index:
          type: integer
        is_pickup:
          type: boolean
        is_dropoff:
          type: boolean
        planned_date:
          type: string
          format: date
        planned_time_window_start:
          type: string
        planned_time_window_end:
          type: string
        location:
          type: object
          properties:
            location_name:
              type: string
            address:
              $ref: '#/components/schemas/Address'
    ShipmentList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Shipment'
        page:
          type: integer
        total_count:
          type: integer
    ShipmentInput:
      type: object
      required:
      - stops
      - line_items
      properties:
        metadata:
          type: object
          additionalProperties: true
        mode:
          type: object
          additionalProperties: true
        equipment_type:
          type: object
          additionalProperties: true
        service_level:
          type: object
          additionalProperties: true
        stops:
          type: array
          items:
            $ref: '#/components/schemas/Stop'
        line_items:
          type: array
          items:
            $ref: '#/components/schemas/LineItem'
    Address:
      type: object
      properties:
        address_1:
          type: string
        city:
          type: string
        state_province:
          type: string
        postal_code:
          type: string
        country:
          type: string
    Shipment:
      allOf:
      - $ref: '#/components/schemas/ShipmentInput'
      - type: object
        properties:
          id:
            type: string
          reference_id:
            type: string
          state:
            type: string
    ShipmentNote:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
        additional_data:
          type: object
          additionalProperties: true
    LineItem:
      type: object
      properties:
        description:
          type: string
        total_packages:
          type: string
        package_weight:
          type: string
        weight_unit:
          type: string
    Error:
      type: object
      properties:
        error_description:
          type: string
        errors:
          type: array
          items:
            type: object
            additionalProperties: true
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: The request payload failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    ShipmentId:
      name: shipmentId
      in: path
      required: true
      description: The ID of the shipment.
      schema:
        type: string
  securitySchemes:
    authToken:
      type: apiKey
      in: header
      name: Authorization
      description: Company-scoped API key passed in the Authorization header (the docs refer to this as the AuthToken scheme). Production and sandbox use separate keys. Keys can be permission-restricted.