---
title: "Filter documents"
method: POST
path: "/documents/filter"
tags: ["Documents"]
---

# Filter documents

`POST /documents/filter`

Search for documents using filter criteria.

## Usage

Documents are typically associated with other entities (orders, loads, services).
Use filters to find documents by type, status, or date range.

## Example Filters

- Find all invoices: `{ "filter": { "type": { "equalTo": "INVOICE" } } }`
- Find uploaded documents: `{ "filter": { "status": { "equalTo": "UPLOADED" } } }`
- Find documents created today: `{ "filter": { "createdAt": { "greaterThanOrEqualTo": "2025-01-15T00:00:00Z" } } }`

## Request body

- DocumentFilterRequest — Request body for filtering documents
  - `filter` DocumentFilter — Filter criteria for documents
    - `entityType` 'ORDER' | 'LOAD' | 'SHIPMENT' | 'CARRIER' | 'CUSTOMER' | 'VENDOR' — Entity kind for entity-scoped document filtering. - `ORDER`: Customer-side documents attached to an order - `LOAD`: Carrier-side documents attached to a load's carrier assignments - `SHIPMENT`: Everything on the shipment — order and load documents combined - `CARRIER`: Documents on a carrier profile - `CUSTOMER`: Documents on a customer - `VENDOR`: Documents on a vendor
    - `entityId` string, uuid — Scope results to documents attached to this entity. Must be provided together with `entityType`. Must appear at the top level of the filter (not nested inside `or` or `not` clauses). Combines with the other filter fields (they apply on top of the entity scope).
    - `id` UUIDFilter — Filter options for UUID fields (all operations)
      - `equalTo` string, uuid — Exact match
      - `notEqualTo` string, uuid — Not equal to
      - `in` string[] — Matches any UUID in the array
      - `notIn` string[] — Does not match any UUID in the array
      - `isNull` boolean — Field is null (true) or not null (false)
    - `type` DocumentTypeFilter — Filter for document type field
      - `equalTo` 'INVOICE' | 'BILL_OF_LADING' | 'RATE_CON' | 'PROOF_OF_DELIVERY' | 'CERTIFICATE_OF_INSURANCE' | 'W9' | 'CARRIER_INVOICE' | 'LUMPER_RECEIPT' | 'DETENTION' | 'DELIVERY_ORDER' | 'LOAD_TENDER' | 'HOUSE_AIRWAY_BILL' | 'MASTER_AIRWAY_BILL' | 'QUOTE' | 'AIR_CARGO_MANIFEST' | 'AIR_CHUTE' | 'AIR_FREIGHT_DEPARTURE_CARTAGE_ADVICE_WITH_RECEIPT' | 'AUTHORITY' | 'AUTHORITY_TO_MAKE_ENTRY' | 'BROKER_CARRIER_AGREEMENT' | 'COI_AUTO' | 'COI_BIPD' | 'COI_CARGO' | 'COMMERCIAL_DRIVERS_LICENSE' | 'COMMERCIAL_INVOICE' | 'CUSTOMER_ACCESSORIAL_SCHEDULE' | 'CUSTOMER_AGREEMENT' | 'CUSTOMER_AWARDED_BIDS' | 'CUSTOMER_AWARDED_RATES_LANES' | 'CUSTOMER_CREDIT_REPORT' | 'DELIVERY_ALERT' | 'FACTOR_NOTICE_OF_ASSIGNMENT' | 'FREIGHT_BILL' | 'FUEL_RECEIPT' | 'GBL' | 'HOUSE_AIRWAY_BILL_LABEL' | 'HOUSE_AIRWAY_BILL_LABEL_MULTI' | 'IAC_CERTIFICATION' | 'INTERNATIONAL_HOUSE_AIRWAY_BILL' | 'INTERNATIONAL_MASTER_AIRWAY_BILL' | 'LOAD_SUMMARY' | 'LOG' | 'LOGO' | 'LOGO_DOC' | 'LOGO_RECTANGLE' | 'PACKING_LIST' | 'PHOTOGRAPH' | 'PROOF_OF_PERFORMANCE' | 'REEFER_KEYPAD' | 'ROUTING_ALERT' | 'SCALE_RECEIPT' | 'SEAL' | 'SHIPPING_LABEL' | 'SIDE_OF_TRUCK' | 'SIGNED_CARRIER_AGREEMENT' | 'TRIP_SHEET' | 'OTHER' — Type of document. Common types: - `INVOICE`: Customer invoice - `BILL_OF_LADING`: Bill of lading document - `RATE_CON`: Rate confirmation - `PROOF_OF_DELIVERY`: Proof of delivery (POD) - `CERTIFICATE_OF_INSURANCE`: Certificate of insurance (COI) - `W9`: W-9 tax form - `CARRIER_INVOICE`: Carrier invoice/bill - `LUMPER_RECEIPT`: Lumper receipt - `DETENTION`: Detention documentation - `DELIVERY_ORDER`: Delivery order - `LOAD_TENDER`: Load tender - `HOUSE_AIRWAY_BILL`: House airway bill (HAWB) - `MASTER_AIRWAY_BILL`: Master airway bill (MAWB) - `QUOTE`: Quote document - `OTHER`: Other document type The remaining values mirror the document types available in the MVMNT TMS UI (carrier compliance, air freight, customer agreements, receipts, alerts, and branding assets). Values outside this list are rejected with 400. Documents created internally with other types are returned as `OTHER`.
      - `notEqualTo` 'INVOICE' | 'BILL_OF_LADING' | 'RATE_CON' | 'PROOF_OF_DELIVERY' | 'CERTIFICATE_OF_INSURANCE' | 'W9' | 'CARRIER_INVOICE' | 'LUMPER_RECEIPT' | 'DETENTION' | 'DELIVERY_ORDER' | 'LOAD_TENDER' | 'HOUSE_AIRWAY_BILL' | 'MASTER_AIRWAY_BILL' | 'QUOTE' | 'AIR_CARGO_MANIFEST' | 'AIR_CHUTE' | 'AIR_FREIGHT_DEPARTURE_CARTAGE_ADVICE_WITH_RECEIPT' | 'AUTHORITY' | 'AUTHORITY_TO_MAKE_ENTRY' | 'BROKER_CARRIER_AGREEMENT' | 'COI_AUTO' | 'COI_BIPD' | 'COI_CARGO' | 'COMMERCIAL_DRIVERS_LICENSE' | 'COMMERCIAL_INVOICE' | 'CUSTOMER_ACCESSORIAL_SCHEDULE' | 'CUSTOMER_AGREEMENT' | 'CUSTOMER_AWARDED_BIDS' | 'CUSTOMER_AWARDED_RATES_LANES' | 'CUSTOMER_CREDIT_REPORT' | 'DELIVERY_ALERT' | 'FACTOR_NOTICE_OF_ASSIGNMENT' | 'FREIGHT_BILL' | 'FUEL_RECEIPT' | 'GBL' | 'HOUSE_AIRWAY_BILL_LABEL' | 'HOUSE_AIRWAY_BILL_LABEL_MULTI' | 'IAC_CERTIFICATION' | 'INTERNATIONAL_HOUSE_AIRWAY_BILL' | 'INTERNATIONAL_MASTER_AIRWAY_BILL' | 'LOAD_SUMMARY' | 'LOG' | 'LOGO' | 'LOGO_DOC' | 'LOGO_RECTANGLE' | 'PACKING_LIST' | 'PHOTOGRAPH' | 'PROOF_OF_PERFORMANCE' | 'REEFER_KEYPAD' | 'ROUTING_ALERT' | 'SCALE_RECEIPT' | 'SEAL' | 'SHIPPING_LABEL' | 'SIDE_OF_TRUCK' | 'SIGNED_CARRIER_AGREEMENT' | 'TRIP_SHEET' | 'OTHER' — Type of document. Common types: - `INVOICE`: Customer invoice - `BILL_OF_LADING`: Bill of lading document - `RATE_CON`: Rate confirmation - `PROOF_OF_DELIVERY`: Proof of delivery (POD) - `CERTIFICATE_OF_INSURANCE`: Certificate of insurance (COI) - `W9`: W-9 tax form - `CARRIER_INVOICE`: Carrier invoice/bill - `LUMPER_RECEIPT`: Lumper receipt - `DETENTION`: Detention documentation - `DELIVERY_ORDER`: Delivery order - `LOAD_TENDER`: Load tender - `HOUSE_AIRWAY_BILL`: House airway bill (HAWB) - `MASTER_AIRWAY_BILL`: Master airway bill (MAWB) - `QUOTE`: Quote document - `OTHER`: Other document type The remaining values mirror the document types available in the MVMNT TMS UI (carrier compliance, air freight, customer agreements, receipts, alerts, and branding assets). Values outside this list are rejected with 400. Documents created internally with other types are returned as `OTHER`.
      - `in` DocumentType[]
      - `notIn` DocumentType[]
    - `status` DocumentStatusFilter — Filter for document status field
      - `equalTo` 'PENDING_UPLOAD' | 'UPLOADED' — Upload status of the document. - `PENDING_UPLOAD`: Document record created, file not yet uploaded - `UPLOADED`: File has been uploaded to storage
      - `notEqualTo` 'PENDING_UPLOAD' | 'UPLOADED' — Upload status of the document. - `PENDING_UPLOAD`: Document record created, file not yet uploaded - `UPLOADED`: File has been uploaded to storage
      - `in` DocumentStatus[]
      - `notIn` DocumentStatus[]
    - `fileName` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `contentType` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `extension` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `createdAt` DatetimeFilter — Filter options for datetime fields
      - `equalTo` string, date-time — Exact match
      - `notEqualTo` string, date-time — Not equal to
      - `lessThan` string, date-time — Before this datetime
      - `lessThanOrEqualTo` string, date-time — On or before this datetime
      - `greaterThan` string, date-time — After this datetime
      - `greaterThanOrEqualTo` string, date-time — On or after this datetime
      - `isNull` boolean — Field is null (true) or not null (false)
    - `updatedAt` DatetimeFilter — Filter options for datetime fields
      - `equalTo` string, date-time — Exact match
      - `notEqualTo` string, date-time — Not equal to
      - `lessThan` string, date-time — Before this datetime
      - `lessThanOrEqualTo` string, date-time — On or before this datetime
      - `greaterThan` string, date-time — After this datetime
      - `greaterThanOrEqualTo` string, date-time — On or after this datetime
      - `isNull` boolean — Field is null (true) or not null (false)
    - `and` DocumentFilter[]
    - `or` DocumentFilter[]
    - `not` DocumentFilter — recursive
  - `pageSize` integer — Number of results per page
  - `cursor` string — Pagination cursor from previous response

## Response `200`

Documents matching filter criteria

- object
  - `data` Document[], required
    - `id` string, uuid, required — Unique identifier for the document
    - `key` string, nullable — Client-defined key for external reference
    - `type` 'INVOICE' | 'BILL_OF_LADING' | 'RATE_CON' | 'PROOF_OF_DELIVERY' | 'CERTIFICATE_OF_INSURANCE' | 'W9' | 'CARRIER_INVOICE' | 'LUMPER_RECEIPT' | 'DETENTION' | 'DELIVERY_ORDER' | 'LOAD_TENDER' | 'HOUSE_AIRWAY_BILL' | 'MASTER_AIRWAY_BILL' | 'QUOTE' | 'AIR_CARGO_MANIFEST' | 'AIR_CHUTE' | 'AIR_FREIGHT_DEPARTURE_CARTAGE_ADVICE_WITH_RECEIPT' | 'AUTHORITY' | 'AUTHORITY_TO_MAKE_ENTRY' | 'BROKER_CARRIER_AGREEMENT' | 'COI_AUTO' | 'COI_BIPD' | 'COI_CARGO' | 'COMMERCIAL_DRIVERS_LICENSE' | 'COMMERCIAL_INVOICE' | 'CUSTOMER_ACCESSORIAL_SCHEDULE' | 'CUSTOMER_AGREEMENT' | 'CUSTOMER_AWARDED_BIDS' | 'CUSTOMER_AWARDED_RATES_LANES' | 'CUSTOMER_CREDIT_REPORT' | 'DELIVERY_ALERT' | 'FACTOR_NOTICE_OF_ASSIGNMENT' | 'FREIGHT_BILL' | 'FUEL_RECEIPT' | 'GBL' | 'HOUSE_AIRWAY_BILL_LABEL' | 'HOUSE_AIRWAY_BILL_LABEL_MULTI' | 'IAC_CERTIFICATION' | 'INTERNATIONAL_HOUSE_AIRWAY_BILL' | 'INTERNATIONAL_MASTER_AIRWAY_BILL' | 'LOAD_SUMMARY' | 'LOG' | 'LOGO' | 'LOGO_DOC' | 'LOGO_RECTANGLE' | 'PACKING_LIST' | 'PHOTOGRAPH' | 'PROOF_OF_PERFORMANCE' | 'REEFER_KEYPAD' | 'ROUTING_ALERT' | 'SCALE_RECEIPT' | 'SEAL' | 'SHIPPING_LABEL' | 'SIDE_OF_TRUCK' | 'SIGNED_CARRIER_AGREEMENT' | 'TRIP_SHEET' | 'OTHER', required — Type of document. Common types: - `INVOICE`: Customer invoice - `BILL_OF_LADING`: Bill of lading document - `RATE_CON`: Rate confirmation - `PROOF_OF_DELIVERY`: Proof of delivery (POD) - `CERTIFICATE_OF_INSURANCE`: Certificate of insurance (COI) - `W9`: W-9 tax form - `CARRIER_INVOICE`: Carrier invoice/bill - `LUMPER_RECEIPT`: Lumper receipt - `DETENTION`: Detention documentation - `DELIVERY_ORDER`: Delivery order - `LOAD_TENDER`: Load tender - `HOUSE_AIRWAY_BILL`: House airway bill (HAWB) - `MASTER_AIRWAY_BILL`: Master airway bill (MAWB) - `QUOTE`: Quote document - `OTHER`: Other document type The remaining values mirror the document types available in the MVMNT TMS UI (carrier compliance, air freight, customer agreements, receipts, alerts, and branding assets). Values outside this list are rejected with 400. Documents created internally with other types are returned as `OTHER`.
    - `fileName` string, required — Original file name
    - `extension` string — File extension (without dot)
    - `contentType` string, required — MIME content type
    - `fileSize` integer, nullable — File size in bytes
    - `status` 'PENDING_UPLOAD' | 'UPLOADED', required — Upload status of the document. - `PENDING_UPLOAD`: Document record created, file not yet uploaded - `UPLOADED`: File has been uploaded to storage
    - `uploadUrl` string, uri, nullable — Pre-signed URL for uploading the file. Only present immediately after document creation. Expires after 15 minutes.
    - `downloadUrl` string, uri, nullable — Pre-signed URL for downloading the file. Present when document status is UPLOADED. Expires after 1 hour.
    - `tags` object, nullable — Arbitrary key-value tags for the document
    - `createdAt` string, date-time, required — When the document was created
    - `updatedAt` string, date-time, nullable — When the document was last updated
  - `pagination` PaginationInfo, required
    - `pageSize` integer, required — Number of items per page
    - `hasNextPage` boolean, required — Whether there are more pages
    - `hasPreviousPage` boolean — Whether there are previous pages
    - `endCursor` string, nullable — Cursor for the next page (null if no next page)

## Other responses

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

---

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