---
title: "Search locations"
method: POST
path: "/locations/search"
tags: ["Locations"]
---

# Search locations

`POST /locations/search`

Search locations using OpenSearch-powered full-text and field-specific search.

This endpoint provides fast, indexed search across location data with support for:
- Full-text search across multiple fields
- Field-specific filtering with various operators
- Geographic search capabilities
- Sorting and pagination
- Saved search preferences

**Note:** Only active (non-deleted) locations are searchable. Soft-deleted records are automatically excluded from all search results.

**Response Formats:**
- `flat` (default): Returns indexed fields only for faster performance
- `full`: Returns complete location objects with all relationships

## Request body

- LocationSearchRequest — Request body for searching locations
  - `criteria` LocationSearchCriteria — Search criteria for filtering locations (shipper/receiver locations). Note: Only active (non-deleted) locations are searchable. Soft-deleted records are automatically excluded.
    - `id` UUIDSearchCriteria — Search criteria for UUID fields
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any UUID in array - `NOT_ONE_OF`: Does not match any UUID in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of UUIDs for ONE_OF or NOT_ONE_OF operators
    - `customerId` UUIDSearchCriteria — Search criteria for UUID fields
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any UUID in array - `NOT_ONE_OF`: Does not match any UUID in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of UUIDs for ONE_OF or NOT_ONE_OF operators
    - `customerName` TextSearchCriteria — Search criteria for text fields (supports wildcards and partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'STARTS_WITH' | 'ENDS_WITH' | 'INCLUDES' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `STARTS_WITH`: Begins with prefix - `ENDS_WITH`: Ends with suffix - `INCLUDES`: Contains substring - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `customerFriendlyId` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `type` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `name` TextSearchCriteria — Search criteria for text fields (supports wildcards and partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'STARTS_WITH' | 'ENDS_WITH' | 'INCLUDES' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `STARTS_WITH`: Begins with prefix - `ENDS_WITH`: Ends with suffix - `INCLUDES`: Contains substring - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `externalId` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `line1` TextSearchCriteria — Search criteria for text fields (supports wildcards and partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'STARTS_WITH' | 'ENDS_WITH' | 'INCLUDES' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `STARTS_WITH`: Begins with prefix - `ENDS_WITH`: Ends with suffix - `INCLUDES`: Contains substring - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `line2` TextSearchCriteria — Search criteria for text fields (supports wildcards and partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'STARTS_WITH' | 'ENDS_WITH' | 'INCLUDES' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `STARTS_WITH`: Begins with prefix - `ENDS_WITH`: Ends with suffix - `INCLUDES`: Contains substring - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `city` TextSearchCriteria — Search criteria for text fields (supports wildcards and partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'STARTS_WITH' | 'ENDS_WITH' | 'INCLUDES' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `STARTS_WITH`: Begins with prefix - `ENDS_WITH`: Ends with suffix - `INCLUDES`: Contains substring - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `state` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `postalCode` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `country` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `market` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `zone` KeywordSearchCriteria — Search criteria for keyword fields (exact match, no partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `phoneNumber` TextSearchCriteria — Search criteria for text fields (supports wildcards and partial matching)
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'STARTS_WITH' | 'ENDS_WITH' | 'INCLUDES' | 'ONE_OF' | 'NOT_ONE_OF' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `STARTS_WITH`: Begins with prefix - `ENDS_WITH`: Ends with suffix - `INCLUDES`: Contains substring - `ONE_OF`: Matches any value in array - `NOT_ONE_OF`: Does not match any value in array - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `values` string[] — Array of values for ONE_OF or NOT_ONE_OF operators
    - `appointmentRequired` BooleanSearchCriteria — Search criteria for boolean fields
      - `operator` 'TRUE' | 'FALSE', required — Search operator: - `TRUE`: Field is true - `FALSE`: Field is false
    - `stopsCount` IntSearchCriteria — Search criteria for integer fields
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'GREATER_THAN' | 'LESS_THAN' | 'BETWEEN' | 'NOT_BETWEEN' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `GREATER_THAN`: Greater than value - `LESS_THAN`: Less than value - `BETWEEN`: Between min and max (inclusive) - `NOT_BETWEEN`: Not between min and max - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `value` integer — Single value for EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN
      - `min` integer — Minimum value for BETWEEN or NOT_BETWEEN
      - `max` integer — Maximum value for BETWEEN or NOT_BETWEEN
    - `createdAt` DatetimeSearchCriteria — Search criteria for datetime fields. Supports both absolute datetime values and relative time expressions.
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'BEFORE' | 'AFTER' | 'BETWEEN' | 'NOT_BETWEEN' | 'EXISTS' | 'DOES_NOT_EXIST', required — Search operator: - `EQUALS`: Exact match - `NOT_EQUALS`: Not equal to - `BEFORE`: Before datetime - `AFTER`: After datetime - `BETWEEN`: Between min and max (inclusive) - `NOT_BETWEEN`: Not between min and max - `EXISTS`: Field has a value (not null) - `DOES_NOT_EXIST`: Field is null
      - `value` string, date-time — Absolute datetime for EQUALS, NOT_EQUALS
      - `min` string, date-time — Minimum datetime for BETWEEN or NOT_BETWEEN
      - `max` string, date-time — Maximum datetime for BETWEEN or NOT_BETWEEN
      - `valueRelative` integer — Relative time from now (negative for past, positive for future). Example: -7 with WEEK unit means 7 weeks ago.
      - `valueRelativeUnit` 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND' — Time unit for relative time calculations: - `YEAR`: Years - `MONTH`: Months - `WEEK`: Weeks - `DAY`: Days - `HOUR`: Hours - `MINUTE`: Minutes - `SECOND`: Seconds
      - `minRelative` integer — Relative time for min boundary
      - `minRelativeUnit` 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND' — Time unit for relative time calculations: - `YEAR`: Years - `MONTH`: Months - `WEEK`: Weeks - `DAY`: Days - `HOUR`: Hours - `MINUTE`: Minutes - `SECOND`: Seconds
      - `maxRelative` integer — Relative time for max boundary
      - `maxRelativeUnit` 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND' — Time unit for relative time calculations: - `YEAR`: Years - `MONTH`: Months - `WEEK`: Weeks - `DAY`: Days - `HOUR`: Hours - `MINUTE`: Minutes - `SECOND`: Seconds
  - `pagination` SearchPaginationInput — Pagination options for search requests
    - `pageNumber` integer — Page number (1-based)
    - `pageSize` integer — Number of results per page (max 250)
  - `sort` SearchSortOption[] — Sort options for the search results
    - `field` string, required — Field name to sort by (must be an indexed field)
    - `order` 'asc' | 'desc', required — Sort direction (ascending or descending)
  - `savedSearch` SavedSearchLookup — Reference to a saved search by ID or client key. Provide either id or key (not both).
    - `id` string, uuid — Saved search UUID
    - `key` string — Client-defined key for the saved search
  - `format` 'flat' | 'full' — Response format: - flat: Returns only indexed fields (default, faster) - full: Returns complete location objects

## Response `200`

Successful search results

- LocationSearchResponse — Response for location search requests. Note: Only active (non-deleted) locations are included in results.
  - `data` union[], required — Search results - either flat rows or full location objects based on format parameter
    - union
      - LocationSearchRow — Flattened location data from search index. Note: This represents only active locations. Soft-deleted records are never returned.
        - `object` 'LOCATION_SEARCH_ROW', required — Object type identifier for discriminating between flat and full response formats
        - `id` string, uuid, required
        - `customerId` string, uuid, required — Customer ID (maps from shipperProfileId)
        - `customerName` string, required — Customer name (maps from shipperProfileName)
        - `customerFriendlyId` string — Customer company ID (maps from shipperProfileFriendlyId)
        - `type` 'SHIPPER' | 'RECEIVER' | 'BOTH' — Location type
        - `name` string, required — Location name
        - `externalId` string, nullable — External reference ID
        - `line1` string, nullable
        - `line2` string, nullable
        - `city` string, nullable
        - `state` string, nullable
        - `postalCode` string, nullable
        - `country` string, nullable
        - `market` string, nullable — DAT market
        - `zone` string, nullable — DAT zone
        - `point` object, nullable — Geographic coordinates
          - `lat` number, float
          - `lon` number, float
        - `phoneNumber` string, nullable — Primary contact phone
        - `appointmentRequired` boolean, nullable — Whether appointments are required (maps from apptReq)
        - `stopsCount` integer, nullable — Number of stops
        - `createdAt` string, date-time, required
      - Location
        - `object` 'LOCATION' — Object type identifier
        - `id` string, uuid, required — Unique location identifier
        - `customerId` string, uuid, required — Customer (shipper profile) this location belongs to
        - `customer` Customer
          - `object` 'CUSTOMER' — Object type identifier
          - `id` string, uuid, required — Unique customer identifier
          - `name` string, required — Customer company name
          - `friendlyId` string, required — Human-readable customer identifier, starts with "A"
          - `status` 'NEW' | 'CONTACTED' | 'QUALIFIED' | 'QUOTED' | 'NURTURING' | 'PENDING' | 'ACTIVE' | 'INACTIVE' | 'BLOCKED' | 'CLOSED', required — Customer account status (includes lead stages): - `NEW`: New lead, not yet contacted - `CONTACTED`: Initial contact made with lead - `QUALIFIED`: Lead has been qualified as potential customer - `QUOTED`: Quote has been provided to lead - `NURTURING`: Lead being nurtured for future opportunity - `PENDING`: Customer prospect pending activation - `ACTIVE`: Active customer account - `INACTIVE`: Deactivated customer account - `BLOCKED`: Customer account blocked from operations - `CLOSED`: Customer account permanently closed
          - `serviceTier` 'TIER_1' | 'TIER_2' | 'TIER_3' — Service tier level for the customer
          - `website` string, nullable — Customer website URL
          - `phoneNumber` string, nullable — Primary phone number
          - `industry` 'AGRICULTURE_FORESTRY' | 'CONSTRUCTION' | 'CONSUMER_GOODS' | 'EDUCATIONAL_SERVICES' | 'ENTERTAINMENT' | 'FOOD_SERVICES' | 'HEALTHCARE' | 'INDUSTRIAL_MACHINERY' | 'MANUFACTURING' | 'MINING' | 'RETAIL_TRADE' | 'TRANSPORTATION_WAREHOUSING' | 'UTILITIES' | 'WHOLESALE_TRADE' — Industry classification for the customer
          - `annualRevenue` '_0_TO_500K' | '_500K_TO_3M' | '_3M_TO_10M' | '_10M_TO_25M' | '_25M_TO_50M' | '_50M_TO_100M' | '_100M_TO_500M' | '_500M_PLUS' — Annual revenue range
          - `annualSpend` '_0_TO_25K' | '_25_TO_150K' | '_150K_TO_300K' | '_300K_TO_1M' | '_1_TO_5M' | '_5M_TO_25M' | '_25M_TO_75M' | '_75M_PLUS' — Annual freight spend estimate range
          - `spendType` 'CONTRACT' | 'SPOT' — Customer spend type: - `CONTRACT`: Customer operates under contract pricing - `SPOT`: Customer operates on spot market pricing
          - `naics` string, nullable — NAICS industry code
          - `ein` string, nullable — Employer Identification Number
          - `duns` string, nullable — Dun & Bradstreet number
          - `leadSource` string, nullable — How this customer was acquired
          - `dbaName` string, nullable — Doing business as name
          - `numberOfEmployees` '_0_TO_1' | '_2_TO_5' | '_6_TO_9' | '_10_TO_24' | '_25_TO_99' | '_100_TO_249' | '_250_TO_499' | '_500_OR_MORE' — Number of employees in the company
          - `externalId` string, nullable — External system identifier
          - `currency` 'USD' | 'CAD' | 'MXN' | 'EUR' | 'GBP' | 'JPY' | 'CNY' | 'AUD' | 'BRL' | 'INR' | 'KRW' | 'RUB' | 'SAR' | 'TRY' | 'IDR' | 'ARS' | 'ZAR' — Preferred currency for transactions
          - `creditLimit` number, float, nullable — Maximum credit allowed
          - `creditUsageWarning` number, float, nullable — Credit usage warning threshold
          - `freeCreditReq` number, float, nullable — Free credit requirement
          - `defaultMode` 'FTL' | 'LTL' | 'AIR' | 'OCEAN' | 'RAIL' | 'INTERMODAL' | 'DRAYAGE' | 'EXPEDITED_GROUND' | 'EXPEDITED_AIR' | 'AUTO' | 'PTL' | 'RLTL' — Transportation mode type
          - `defaultMargin` number, float, nullable — Default margin percentage (0-1, e.g., 0.15 for 15%)
          - `minMargin` number, float, nullable — Minimum margin threshold
          - `maxMargin` number, float, nullable — Maximum margin threshold
          - `defaultInternalNotes` string, nullable — Default internal notes template
          - `defaultCarrierNotes` string, nullable — Default carrier-facing notes template used when note splitting is enabled
          - `defaultExternalNotes` string, nullable — Default external notes template
          - `defaultShowNotes` 'ALL' | 'SPLIT' — Controls whether external notes are shown on all documents or split from carrier-facing notes. - `ALL`: Use external notes on customer-facing and carrier-facing documents - `SPLIT`: Use external notes on customer-facing documents and carrier notes on carrier-facing documents
          - `autoAcceptTender` boolean, nullable — Auto-accept tender flag
          - `group` ResourceReference — Reference to another resource (returned in responses)
            - `id` string, uuid, required — Resource UUID
            - `key` string, nullable — Client-defined reference ID if set
          - `paymentTerm` PaymentTermReference — Enhanced reference to a payment term resource (returned in responses). Includes full payment term details in addition to id/key.
            - `id` string, uuid, required — Payment term UUID
            - `key` string, nullable — Client-defined reference ID if set
            - `name` string, required — Payment term name
            - `description` string, nullable — Payment term description or notes
            - `days` integer, nullable — Number of days until payment is due
            - `quickPayFee` number, float, nullable — Quick pay fee percentage (e.g., 0.05 for 5%)
            - `apOnly` boolean, nullable — Whether this payment term is for accounts payable only
            - `doNotUse` boolean, nullable — Flag to prevent using this payment term for new transactions
            - `createdAt` string, date-time, required — When the payment term was created
            - `updatedAt` string, date-time, required — When the payment term was last updated
            - `deletedAt` string, date-time, nullable — When the payment term was soft deleted (null if active)
          - `notes` string, nullable — Internal notes about this customer
          - `deactivationReason` 'NOT_PAYING_INVOICE' | 'ACQUIRED' | 'DUPLICATE' | 'NOT_IN_BUSINESS' | 'OTHER' — Reason for customer deactivation: - `NOT_PAYING_INVOICE`: Customer is not paying invoices - `ACQUIRED`: Customer was acquired by another company - `DUPLICATE`: Duplicate customer record - `NOT_IN_BUSINESS`: Customer is no longer in business - `OTHER`: Other reason (see deactivationNotes for details)
          - `deactivationNotes` string, nullable — Additional details about deactivation
          - `deactivationDate` string, date-time, nullable — When the customer was deactivated
          - `closedAt` string, date-time, nullable — When the customer account was closed
          - `closedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
            - `id` string, uuid, required — User UUID
            - `key` string, nullable — Client-defined reference ID if set
            - `email` string, email, required — User's email address
            - `name` string, nullable — User's full name
            - `phone` string, nullable — User's phone number
            - `phoneExt` string, nullable — Phone extension
            - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
            - `avatarId` string, uuid, nullable — Profile avatar document ID
            - `createdAt` string, date-time, required — When the user was created
            - `updatedAt` string, date-time, required — When the user was last updated
            - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
          - `closedNotes` string, nullable — Notes about account closure
          - `corporateAddress` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
            - `line1` string, required — Primary street address line
            - `line2` string, nullable — Secondary address line (suite, floor, etc.)
            - `city` string, required — City name
            - `state` string, nullable — State or province code
            - `zipCode` string, nullable — Postal / ZIP code
            - `country` string, required — Country name or code
            - `market` string, required — Market or region identifier
            - `latitude` string, nullable — Latitude coordinate
            - `longitude` string, nullable — Longitude coordinate
            - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
            - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
            - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
            - `obeysDst` boolean, required — Whether this location observes daylight saving time
            - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
          - `billingAddress` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
            - `line1` string, required — Primary street address line
            - `line2` string, nullable — Secondary address line (suite, floor, etc.)
            - `city` string, required — City name
            - `state` string, nullable — State or province code
            - `zipCode` string, nullable — Postal / ZIP code
            - `country` string, required — Country name or code
            - `market` string, required — Market or region identifier
            - `latitude` string, nullable — Latitude coordinate
            - `longitude` string, nullable — Longitude coordinate
            - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
            - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
            - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
            - `obeysDst` boolean, required — Whether this location observes daylight saving time
            - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
          - `qboCustomerId` string, nullable — QuickBooks Online customer ID
          - `key` string, nullable — Client-defined reference identifier for this customer
          - `contacts` CustomerContactReference[] — Contacts for this customer
            - `object` 'CUSTOMER_CONTACT' — Object type identifier
            - `id` string, uuid, required — Unique contact identifier
            - `key` string, nullable — Client-defined reference identifier
            - `name` string, required — Contact person's name
            - `contactInfo` ContactInfo, required — Contact information details (nested, without id). This is an embedded object representing a Contact record. The id is managed internally and not exposed in the API.
              - …
            - `phoneExtension` string, nullable — Phone extension specific to this contact role
            - `isPrimary` boolean, required — Whether this is the primary contact
            - `contactTypes` CustomerContactType[], nullable — Types/roles this contact serves
            - `notifications` CustomerContactNotificationType[], nullable — Shipment notification types
            - `invitedUser` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
              - …
            - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
              - …
            - `createdAt` string, date-time, required — When the contact was created
            - `deletedAt` string, date-time, nullable — When the contact was soft deleted
          - `createdAt` string, date-time, required — Timestamp when customer was created
          - `updatedAt` string, date-time, required — Timestamp when customer was last updated
          - `deletedAt` string, date-time, nullable — Timestamp when customer was soft-deleted (null if active)
          - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
            - `id` string, uuid, required — User UUID
            - `key` string, nullable — Client-defined reference ID if set
            - `email` string, email, required — User's email address
            - `name` string, nullable — User's full name
            - `phone` string, nullable — User's phone number
            - `phoneExt` string, nullable — Phone extension
            - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
            - `avatarId` string, uuid, nullable — Profile avatar document ID
            - `createdAt` string, date-time, required — When the user was created
            - `updatedAt` string, date-time, required — When the user was last updated
            - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
        - `address` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
          - `line1` string, required — Primary street address line
          - `line2` string, nullable — Secondary address line (suite, floor, etc.)
          - `city` string, required — City name
          - `state` string, nullable — State or province code
          - `zipCode` string, nullable — Postal / ZIP code
          - `country` string, required — Country name or code
          - `market` string, required — Market or region identifier
          - `latitude` string, nullable — Latitude coordinate
          - `longitude` string, nullable — Longitude coordinate
          - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
          - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
          - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
          - `obeysDst` boolean, required — Whether this location observes daylight saving time
          - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
        - `name` string, required — Location name
        - `key` string, nullable — Client-defined reference identifier for this location
        - `type` 'SHIPPER' | 'RECEIVER' | 'BOTH' — The type of location: - `SHIPPER`: Pickup location only - `RECEIVER`: Delivery location only - `BOTH`: Can be used for both pickup and delivery
        - `isAppointmentRequired` boolean, required — Whether appointments are required for this location
        - `notes` string, nullable — External notes visible to carriers
        - `internalNotes` string, nullable — Internal notes (not visible to carriers)
        - `contacts` LocationContactReference[] — Contacts for this location
          - `object` 'LOCATION_CONTACT' — Object type identifier
          - `id` string, uuid, required — Unique location contact identifier
          - `customerContactId` string, uuid, required — Customer contact linked to this location
          - `customerContact` CustomerContact
            - `object` 'CUSTOMER_CONTACT' — Object type identifier
            - `id` string, uuid, required — Unique contact identifier
            - `customer` CustomerReference, required — Enhanced reference to a customer resource (returned in responses). Includes full customer details in addition to id/key. Note: Does NOT include nested references (paymentTerm, contacts, etc.) to prevent recursion. Maximum nesting depth: 1 level.
              - …
            - `name` string, required — Contact person's name (denormalized from ContactInfo for convenience)
            - `contactInfo` ContactInfo, required — Contact information details (nested, without id). This is an embedded object representing a Contact record. The id is managed internally and not exposed in the API.
              - …
            - `phoneExtension` string, nullable — Phone extension specific to this contact role
            - `isPrimary` boolean, required — Whether this is the primary contact for the customer
            - `contactTypes` CustomerContactType[], nullable — Types/roles this contact serves
            - `notifications` CustomerContactNotificationType[], nullable — Shipment notification types to send to this contact
            - `invitedUser` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
              - …
            - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
              - …
            - `key` string, nullable — Client-defined reference identifier
            - `createdAt` string, date-time, required — When the contact was created
            - `deletedAt` string, date-time, nullable — When the contact was soft deleted (null if active)
          - `isPrimary` boolean, required — Whether this is the primary contact for the location
          - `contactTypes` LocationContactType[] — Roles/types for this location contact
          - `key` string, nullable — Client-defined reference identifier for this location contact
          - `createdAt` string, date-time, required — Timestamp when location contact was created
          - `updatedAt` string, date-time, required — Timestamp when location contact was last updated
          - `deletedAt` string, date-time, nullable — Timestamp when location contact was soft-deleted (null if active)
        - `createdAt` string, date-time, required — Timestamp when location was created
        - `updatedAt` string, date-time, required — Timestamp when location was last updated
        - `deletedAt` string, date-time, nullable — Timestamp when location was soft-deleted (null if active)
  - `pagination` SearchPaginationInfo, required — Pagination information for search results
    - `pageNumber` integer, required — Current page number
    - `pageSize` integer, required — Number of results returned on this page
    - `totalPages` integer, required — Total number of pages available
  - `totalResults` integer, required — Total number of matching results (excluding soft-deleted records)

## Other responses

- `400` — Bad request - invalid input
- `401` — Unauthorized - invalid or missing access token
- `422` — Validation error - invalid field values
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/mvmnt/apis/mvmnt-api.md) · [All operations](https://skmtc.net/mvmnt/apis/mvmnt-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mvmnt/mvmnt-api/revisions/53b310bb74a0/schema)
