> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shippeek.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Book an LTL shipment

> Book a shipment using a rate ID from a previous rate request. Returns a BOL, PRO number, and optionally schedules a pickup with the carrier.



## OpenAPI

````yaml openapi.json post /book
openapi: 3.0.0
info:
  title: ShipPeek API
  version: 1.0.0
  description: Multi-carrier shipping rate aggregation, booking, and tracking API.
  contact:
    name: ShipPeek API Support
    email: yash@shippeek.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: https://shippeek.com/terms
servers:
  - url: https://api.shippeek.dev
    description: Sandbox
  - url: https://api.shippeek.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Rates
    description: Get shipping rates from multiple carriers
  - name: Booking
    description: Book shipments and manage pickups
  - name: Tracking
    description: Track shipments by PRO or tracking number
  - name: Shipments
    description: Retrieve and search shipment data
paths:
  /book:
    post:
      tags:
        - Booking
      summary: Book an LTL shipment
      description: >-
        Book a shipment using a rate ID from a previous rate request. Returns a
        BOL, PRO number, and optionally schedules a pickup with the carrier.
      operationId: bookLtlShipment
      parameters:
        - name: labelSize
          in: query
          description: Label size for the shipment
          schema:
            type: string
            default: 4x6
            enum:
              - 2.25x4
              - 3x4
              - 3x5
              - 3.5x5
              - 4x1
              - 4x2
              - 4x3.3
              - 4x6
              - 4x8
              - 5.5x8.5
              - 8.5x11
        - name: labelCount
          in: query
          description: Number of labels per handling unit
          schema:
            type: integer
            enum:
              - 1
              - 2
              - 4
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - rateId
              properties:
                id:
                  type: string
                  description: Quote ID from the rate response
                rateId:
                  type: string
                  description: Rate ID of the selected rate
                schedulePickup:
                  type: boolean
                  description: Whether to schedule a carrier pickup
                  default: false
                shareShipmentEmails:
                  type: array
                  items:
                    type: string
                    format: email
                  description: Email addresses to share shipment details with
                bolNum:
                  type: string
                  description: Custom BOL number. Auto-generated if not provided.
                originCompany:
                  type: string
                originAddress:
                  type: string
                originAddress2:
                  type: string
                originContactName:
                  type: string
                originContactPhone:
                  type: string
                originContactEmail:
                  type: string
                  format: email
                originReferenceNumber:
                  type: string
                  description: Reference number (e.g. order number)
                originInstructions:
                  type: string
                originDockHoursOpen:
                  type: string
                  description: Dock open time (e.g. 9:00 AM)
                originDockHoursClose:
                  type: string
                  description: Dock close time (e.g. 5:00 PM)
                destCompany:
                  type: string
                destAddress:
                  type: string
                destAddress2:
                  type: string
                destContactName:
                  type: string
                destContactPhone:
                  type: string
                destContactEmail:
                  type: string
                  format: email
                destReferenceNumber:
                  type: string
                  description: Reference number (e.g. PO number)
                destInstructions:
                  type: string
                destDockHoursOpen:
                  type: string
                destDockHoursClose:
                  type: string
                emergencyName:
                  type: string
                  description: Required for hazardous shipments
                emergencyPhone:
                  type: string
                  description: Required for hazardous shipments
      responses:
        '200':
          description: Shipment booked successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ShipPeek shipment ID
                  createdDate:
                    type: string
                    format: date-time
                  status:
                    type: string
                  direction:
                    type: string
                    enum:
                      - outbound
                      - inbound
                      - third-party
                  dispatch:
                    type: object
                    properties:
                      carrierId:
                        type: string
                      carrier:
                        type: string
                      carrierCode:
                        type: string
                      schedulePickup:
                        type: boolean
                      bolStatus:
                        type: string
                      pickupNum:
                        type: string
                      proNum:
                        type: string
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            itemId:
                              type: string
                            index:
                              type: integer
                            trackingNum:
                              type: string
        '400':
          description: Bad request
        '401':
          description: Authentication failed
        '402':
          description: No active ShipPeek subscription
        '429':
          description: Rate limit exceeded (20 requests/minute)
        '500':
          description: Carrier booking error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your ShipPeek API token in the format `client_id.client_secret`.

````