Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/mvmnt-vendors-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
title: MVMNT Vendors API
version: 1.0.0
description: "The MVMNT API enables you to automate freight brokerage workflows by integrating\ndirectly with our Transportation Management System.\n\n## Authentication\n\nOAuth 2.0 client credentials flow. See [Authentication Guide](/getting-started/authentication)\nfor details.\n\n### Token Endpoint\n\n```\nPOST https://api.mvmnt.io/oauth2/token\n```\n\n#### Request\n\n**Headers:**\n```http\nContent-Type: application/x-www-form-urlencoded\n```\n\n**Body Parameters:**\n```\ngrant_type=client_credentials\nclient_id=YOUR_CLIENT_ID\nclient_secret=YOUR_CLIENT_SECRET\n```\n\n#### Example Request\n\n```bash\ncurl -X POST https://api.mvmnt.io/oauth2/token \\\n -H \"Content-Type: application/x-www-form-urlencoded\" \\\n -d \"grant_type=client_credentials\" \\\n -d \"client_id=YOUR_CLIENT_ID\" \\\n -d \"client_secret=YOUR_CLIENT_SECRET\"\n```\n\n#### Success Response\n\n**Status:** `200 OK`\n\n```json\n{\n \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n```\n\n**Response Fields:**\n- `access_token`: JWT Bearer token to use for API requests\n- `token_type`: Always `Bearer`\n- `expires_in`: Token lifetime in seconds (3600 = 1 hour)\n"
contact:
name: MVMNT Support
email: support@mvmnt.io
url: https://docs.mvmnt.io
license:
name: Proprietary
url: https://mvmnt.io/legal/terms
x-parsed-md-description:
result:
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: true
attributes:
content: The MVMNT API enables you to automate freight brokerage workflows by integrating
children: []
type: text
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: true
attributes: {}
children: []
type: softbreak
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: true
attributes:
content: directly with our Transportation Management System.
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes:
level: 2
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: true
attributes:
content: Authentication
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: heading
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: 'OAuth 2.0 client credentials flow. See '
children: []
type: text
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
href: /getting-started/authentication
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: Authentication Guide
children: []
type: text
annotations: []
slots: {}
type: link
annotations: []
slots: {}
redocly:::linkOriginal:href: /getting-started/authentication
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: ' for details.'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
servers:
- url: https://api.mvmnt.io/v1
description: Production
security:
- BearerAuth: []
tags:
- name: Vendors
description: Vendor management operations
paths:
/vendors/filter:
post:
tags:
- Vendors
summary: Filter vendors
description: 'Query vendors using flexible filter criteria with AND/OR logic.
By default, only non-deleted vendors are returned (deletedAt: { isNull: true }).
Override this by explicitly setting deletedAt filter criteria.
'
operationId: filterVendors
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VendorFilterRequest'
responses:
'200':
description: Filtered vendors with pagination
content:
application/json:
schema:
type: object
required:
- data
- pageInfo
properties:
data:
type: array
items:
$ref: '#/components/schemas/Vendor'
pageInfo:
$ref: '#/components/schemas/PaginationInfo'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/InternalServerError'
/vendors:
post:
tags:
- Vendors
summary: Create a new vendor
description: 'Create a new vendor within an organization.
Vendors represent service providers (warehousing, storage, etc.) that are not carriers.
'
operationId: createVendor
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VendorInput'
examples:
warehouse:
summary: Warehouse vendor
value:
name: ABC Warehouse Services
email: billing@abcwarehouse.com
phone: +1-555-123-4567
status: ACTIVE
currency: USD
taxId: 12-3456789
storage:
summary: Storage facility
value:
name: SecureStore Facilities
email: accounts@securestore.com
phone: +1-555-987-6543
status: ACTIVE
currency: USD
responses:
'201':
description: Vendor created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Vendor'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'409':
$ref: '#/components/responses/ConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
/vendors/{id}:
get:
tags:
- Vendors
summary: Get a vendor by ID
description: 'Retrieve a single vendor by its unique identifier.
'
operationId: getVendorById
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
responses:
'200':
description: Vendor found
content:
application/json:
schema:
$ref: '#/components/schemas/Vendor'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
patch:
tags:
- Vendors
summary: Update a vendor
description: 'Partially update a vendor. Only provided fields will be updated.
- **Omitted fields**: Not modified (current value preserved)
- **Provided fields**: Updated to the new value
- **Null values**: Clear the field (set to null) where applicable
'
operationId: updateVendor
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VendorPatch'
examples:
updateContact:
summary: Update contact information
value:
email: newemail@abcwarehouse.com
phone: +1-555-999-8888
updateStatus:
summary: Update vendor status
value:
status: INACTIVE
notes: Contract ended
responses:
'200':
description: Vendor updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Vendor'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'409':
$ref: '#/components/responses/ConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
tags:
- Vendors
summary: Delete a vendor
description: 'Soft delete a vendor (sets deletedAt timestamp).
The vendor will no longer appear in default queries but can be retrieved
by explicitly filtering for deleted records.
'
operationId: deleteVendor
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
responses:
'204':
description: Vendor deleted successfully
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
/vendors/search:
post:
summary: Search vendors
description: 'Search vendors using OpenSearch-powered full-text and field-specific search.
This endpoint provides fast, indexed search across vendor data with support for:
- Full-text search across multiple fields
- Field-specific filtering with various operators
- Sorting and pagination
- Saved search preferences
**Note:** Only active (non-deleted) vendors 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 vendor objects with all relationships
'
operationId: searchVendors
tags:
- Vendors
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VendorSearchRequest'
responses:
'200':
description: Successful search results
content:
application/json:
schema:
$ref: '#/components/schemas/VendorSearchResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/vendors/{id}/outstanding-bills:
get:
summary: Get vendor outstanding bills
description: 'List outstanding (unpaid) bills for a vendor.
Returns bills with status `APPROVED_TO_PAY`.
'
operationId: getVendorOutstandingBills
tags:
- Vendors
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
responses:
'200':
description: Outstanding bills retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/OutstandingBillsResponse'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
/vendors/{id}/bills-for-payment:
get:
summary: Get vendor bills available for payment
description: 'List bills available for payment from a vendor.
Returns bills with status `APPROVED_TO_PAY` and open balance.
'
operationId: getVendorBillsForPayment
tags:
- Vendors
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
responses:
'200':
description: Bills for payment retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/OutstandingBillsForPaymentResponse'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
components:
responses:
InternalServerError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: internal_server_error
message: An unexpected error occurred
NotFoundError:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: not_found
message: Resource not found
ValidationError:
description: Validation error - invalid field values
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
example:
error: validation_error
message: Invalid field values
details:
- field: email
message: Must be a valid email address
- field: status
message: Must be one of PENDING, ACTIVE, INACTIVE
ConflictError:
description: Conflict - resource already exists or constraint violation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: conflict
message: A resource with this identifier already exists
RateLimitExceeded:
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: rate_limit_exceeded
message: Too many requests. Please retry after 60 seconds.
headers:
X-RateLimit-Limit:
description: Request limit per minute
schema:
type: integer
X-RateLimit-Remaining:
description: Remaining requests in current window
schema:
type: integer
X-RateLimit-Reset:
description: Unix timestamp when rate limit resets
schema:
type: integer
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
BadRequestError:
description: Bad request - invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: bad_request
message: Invalid request parameters
UnauthorizedError:
description: Unauthorized - invalid or missing access token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: unauthorized
message: Invalid or expired access token
schemas:
BillEntityType:
type: string
enum:
- CARRIER
- VENDOR
description: 'Type of entity the bill is for.
- `CARRIER`: Bill for a carrier (LoadCarrier)
- `VENDOR`: Bill for a vendor service (VendedService)
'
PaymentTermReference:
type: object
description: 'Enhanced reference to a payment term resource (returned in responses).
Includes full payment term details in addition to id/key.
'
required:
- id
- name
- createdAt
- updatedAt
properties:
id:
type: string
format: uuid
description: Payment term UUID
example: 550e8400-e29b-41d4-a716-446655440000
key:
type:
- string
- 'null'
maxLength: 512
description: Client-defined reference ID if set
example: ERP-PAYTERM-NET30
name:
type: string
description: Payment term name
example: Net 30
description:
type:
- string
- 'null'
description: Payment term description or notes
example: Payment due 30 days from invoice date
days:
type:
- integer
- 'null'
description: Number of days until payment is due
example: 30
quickPayFee:
type:
- number
- 'null'
format: float
description: Quick pay fee percentage (e.g., 0.05 for 5%)
example: 0.05
x-parsed-md-description:
result:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: true
attributes:
content: Quick pay fee percentage (e.g., 0.05 for 5%)
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
apOnly:
type:
- boolean
- 'null'
description: Whether this payment term is for accounts payable only
example: false
doNotUse:
type:
- boolean
- 'null'
description: Flag to prevent using this payment term for new transactions
example: false
createdAt:
type: string
format: date-time
description: When the payment term was created
example: '2025-01-15T10:00:00Z'
updatedAt:
type: string
format: date-time
description: When the payment term was last updated
example: '2025-01-15T14:30:00Z'
deletedAt:
type:
- string
- 'null'
format: date-time
description: When the payment term was soft deleted (null if active)
example: null
vendors_Currency:
type: string
description: Currency code
enum:
- USD
- CAD
- MXN
- EUR
- GBP
VendorContactRole:
type: string
description: Type of vendor contact role
enum:
- AGENT
- BILLING
- OPERATION
- OWNER
VendorInput:
type: object
required:
- name
properties:
name:
type: string
description: Vendor legal name
example: ABC Warehouse Services
key:
type: string
maxLength: 512
description: Client-defined reference identifier
example: ERP-VENDOR-ABC-001
email:
type: string
format: email
description: Primary email address
example: billing@abcwarehouse.com
phone:
type: string
description: Primary phone number
example: +1-555-123-4567
status:
type: string
description: Vendor status
example: ACTIVE
notes:
type: string
description: Internal notes about the vendor
example: Preferred vendor for warehouse services
taxId:
type: string
description: Tax identification number
example: 12-3456789
currency:
$ref: '#/components/schemas/vendors_Currency'
description: Preferred currency for transactions
corporateAddress:
$ref: '#/components/schemas/AddressInput'
description: Corporate headquarters address
billingAddress:
$ref: '#/components/schemas/AddressInput'
description: Billing address for invoices
paymentTermId:
type: string
format: uuid
description: Payment term ID
example: 550e8400-e29b-41d4-a716-446655440001
isMvmnt:
type: boolean
description: Whether this vendor is MVMNT itself
example: false
requiredDocuments:
type: array
items:
type: string
description: List of required document types
example:
- W9
- INSURANCE_CERTIFICATE
VendorPaymentMethodReference:
type: object
description: 'Vendor payment method reference for embedding in Vendor responses.
Identical to VendorPaymentMethod but excludes the vendor and vendorId fields to avoid circular references.
'
required:
- id
- paymentMethodType
- createdAt
- updatedAt
properties:
id:
type: string
format: uuid
readOnly: true
description: Unique vendor payment method identifier
example: 550e8400-e29b-41d4-a716-446655440000
key:
type:
- string
- 'null'
maxLength: 512
description: Client-defined reference identifier
example: VENDOR-PM-001
paymentMethodType:
$ref: '#/components/schemas/PaymentMethodType'
description: How payment is made
status:
type:
- string
- 'null'
description: Payment method status
example: ACTIVE
isPreferred:
type:
- boolean
- 'null'
description: Whether this is the preferred payment method
example: true
email:
type:
- string
- 'null'
format: email
description: Email address for payment notifications
example: payments@vendor.com
phone:
type:
- string
- 'null'
description: Phone number for payment contact
example: +1-555-123-4567
companyName:
type:
- string
- 'null'
description: Company name for this payment method
example: Vendor Payments LLC
username:
type:
- string
- 'null'
description: Username for payment platforms
example: vendor_payments
bankName:
type:
- string
- 'null'
description: Bank name
example: Chase Bank
bankAddress:
type:
- string
- 'null'
description: Bank address
example: 123 Bank Street, Dallas, TX 75201
accountName:
type:
- string
- 'null'
description: Bank account holder name
example: Vendor Services Inc
accountNumber:
type:
- string
- 'null'
description: Bank account number (masked in responses)
example: '****1234'
abaAch:
type:
- string
- 'null'
description: ABA/ACH routing number
example: '021000021'
wire:
type:
- string
- 'null'
description: Wire transfer routing number
example: 026009593
swiftCode:
type:
- string
- 'null'
description: SWIFT/BIC code
example: CHASUS33
eftInstitution:
type:
- string
- 'null'
description: EFT institution number (Canadian banking)
example: '001'
eftTransit:
type:
- string
- 'null'
description: EFT transit number (Canadian banking)
example: '00010'
clabe:
type:
- string
- 'null'
description: CLABE number (Mexican banking)
example: 012180001234567897
currency:
type:
- string
- 'null'
description: Preferred currency code
example: USD
paymentTerm:
anyOf:
- $ref: '#/components/schemas/PaymentTermReference'
- type: 'null'
description: Payment terms
createdAt:
type: string
format: date-time
readOnly: true
description: When the payment method was created
example: '2025-01-15T10:00:00Z'
updatedAt:
type: string
format: date-time
readOnly: true
description: When the payment method was last updated
example: '2025-01-15T14:30:00Z'
deletedAt:
type:
- string
- 'null'
format: date-time
readOnly: true
description: When the payment method was soft deleted
example: null
deletedBy:
anyOf:
- $ref: '#/components/schemas/UserReference'
- type: 'null'
readOnly: true
description: User who deleted this payment method
SearchPaginationInput:
type: object
description: Pagination options for search requests
properties:
pageNumber:
type: integer
minimum: 1
default: 1
description: Page number (1-based)
example: 1
pageSize:
type: integer
minimum: 1
maximum: 250
default: 50
description: Number of results per page (max 250)
example: 50
example:
pageNumber: 1
pageSize: 50
UUIDFilter:
type: object
description: Filter options for UUID fields (all operations)
properties:
equalTo:
type: string
format: uuid
description: Exact match
notEqualTo:
type: string
format: uuid
description: Not equal to
in:
type: array
items:
type: string
format: uuid
description: Matches any UUID in the array
notIn:
type: array
items:
type: string
format: uuid
description: Does not match any UUID in the array
isNull:
type: boolean
description: Field is null (true) or not null (false)
KeywordSearchCriteria:
type: object
required:
- operator
description: Search criteria for keyword fields (exact match, no partial matching)
properties:
operator:
type: string
enum:
- EQUALS
- NOT_EQUALS
- ONE_OF
- NOT_ONE_OF
- EXISTS
- DOES_NOT_EXIST
description: '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:
type: array
items:
type: string
description: Array of values for ONE_OF or NOT_ONE_OF operators
example:
- ACTIVE
- PENDING
example:
operator: ONE_OF
values:
- ACTIVE
- PENDING
UserReference:
type: object
description: '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.
'
required:
- id
- email
- status
- createdAt
- updatedAt
properties:
id:
type: string
format: uuid
description: User UUID
example: 550e8400-e29b-41d4-a716-446655440000
key:
type:
- string
- 'null'
maxLength: 512
description: Client-defined reference ID if set
example: ERP-USER-12345
email:
type: string
format: email
description: User's email address
example: john.doe@example.com
name:
type:
- string
- 'null'
description: User's full name
example: John Doe
phone:
type:
- string
- 'null'
description: User's phone number
example: +1-555-123-4567
phoneExt:
type:
- string
- 'null'
description: Phone extension
example: '123'
status:
type: string
description: User account status
enum:
- PENDING
- ACTIVE
- INACTIVE
example: ACTIVE
avatarId:
type:
- string
- 'null'
format: uuid
description: Profile avatar document ID
example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
createdAt:
type: string
format: date-time
description: When the user was created
example: '2025-01-15T10:00:00Z'
updatedAt:
type: string
format: date-time
description: When the user was last updated
example: '2025-01-15T14:30:00Z'
deletedAt:
type:
- string
- 'null'
format: date-time
description: When the user was soft deleted (null if active)
example: null
CarrierReference:
type: object
description: 'Enhanced reference to a carrier resource (returned in responses).
Includes full carrier details in addition to id/key.
Note: Does NOT include nested references (contacts, etc.) to prevent recursion.
Maximum nesting depth: 1 level.
'
required:
- id
- name
- createdAt
- updatedAt
properties:
id:
type: string
format: uuid
description: Carrier UUID
example: 550e8400-e29b-41d4-a716-446655440000
key:
type:
- string
- 'null'
maxLength: 512
description: Client-defined reference ID if set
example: ERP-CARRIER-SWIFT
name:
type: string
description: Carrier company name
example: Swift Transportation
phoneNumber:
type:
- string
- 'null'
de
# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mvmnt/refs/heads/main/openapi/mvmnt-vendors-api-openapi.yml