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-customers-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 Customers 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: Customers
description: Customer management operations
paths:
/customers/filter:
post:
summary: Filter customers
description: 'Filter customers using comprehensive query criteria with AND/OR logic and multiple operators.
Supports complex filtering similar to GraphQL capabilities.
Note: Soft-deleted customers are excluded by default (deletedAt defaults to { isNull: true }).
'
operationId: filterCustomers
tags:
- Customers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerFilterRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Customer'
pagination:
$ref: '#/components/schemas/PaginationInfo'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
x-parsed-md-description:
result:
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: true
attributes:
content: Filter customers using comprehensive query criteria with AND/OR logic and multiple operators.
children: []
type: text
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: true
attributes: {}
children: []
type: softbreak
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: true
attributes:
content: Supports complex filtering similar to GraphQL capabilities.
children: []
type: text
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: true
attributes: {}
children: []
type: softbreak
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 3
inline: true
attributes:
content: 'Note: Soft-deleted customers are excluded by default (deletedAt defaults to { isNull: true }).'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
/customers:
post:
summary: Create customer
description: Create a new customer in your organization
operationId: createCustomer
tags:
- Customers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerInput'
responses:
'201':
description: Customer created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/customers/{id}:
get:
summary: Get customer
description: Retrieve a customer by ID or client key
operationId: getCustomer
tags:
- Customers
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
patch:
summary: Update customer
description: Partially update a customer. Only provided fields will be updated.
operationId: updateCustomer
tags:
- Customers
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerPatch'
responses:
'200':
description: Customer updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
delete:
summary: Delete customer
description: Soft delete a customer (sets deletedAt timestamp)
operationId: deleteCustomer
tags:
- Customers
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
responses:
'204':
description: Customer deleted successfully
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/customers/search:
post:
summary: Search customers
description: 'Search customers using OpenSearch-powered full-text and field-specific search.
This endpoint provides fast, indexed search across customer 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) customers 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 customer objects with all relationships
'
operationId: searchCustomers
tags:
- Customers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerSearchRequest'
responses:
'200':
description: Successful search results
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerSearchResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/customers/{id}/payments:
get:
summary: Get customer payments
description: List all payments from a specific customer.
operationId: getCustomerPayments
tags:
- Customers
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
- name: pageSize
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 50
- name: cursor
in: query
schema:
type: string
responses:
'200':
description: Payments retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Payment'
pagination:
$ref: '#/components/schemas/PaginationInfo'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
/customers/{id}/outstanding-invoices:
get:
summary: Get outstanding invoices
description: 'List invoices available for payment from a customer.
Returns invoices with status `AWAITING_PAYMENT` or `PARTIALLY_PAID`.
'
operationId: getCustomerOutstandingInvoices
tags:
- Customers
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
- $ref: '#/components/parameters/LookupBy'
responses:
'200':
description: Outstanding invoices retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/OutstandingInvoicesResponse'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
components:
schemas:
CustomerStatus:
type: string
enum:
- NEW
- CONTACTED
- QUALIFIED
- QUOTED
- NURTURING
- PENDING
- ACTIVE
- INACTIVE
- BLOCKED
- CLOSED
description: '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
'
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: 'Customer account status (includes lead stages):'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 1
- 11
inline: false
attributes:
ordered: false
marker: '-'
children:
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: true
attributes:
content: NEW
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: true
attributes:
content: ': New lead, not yet contacted'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: true
attributes:
content: CONTACTED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: true
attributes:
content: ': Initial contact made with lead'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: true
attributes:
content: QUALIFIED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: true
attributes:
content: ': Lead has been qualified as potential customer'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: true
attributes:
content: QUOTED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: true
attributes:
content: ': Quote has been provided to lead'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
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: NURTURING
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: ': Lead being nurtured for future opportunity'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: true
attributes:
content: PENDING
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: true
attributes:
content: ': Customer prospect pending activation'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: true
attributes:
content: ACTIVE
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: true
attributes:
content: ': Active customer account'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: true
attributes:
content: INACTIVE
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: true
attributes:
content: ': Deactivated customer account'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: true
attributes:
content: BLOCKED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: true
attributes:
content: ': Customer account blocked from operations'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: true
attributes:
content: CLOSED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: true
attributes:
content: ': Customer account permanently closed'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
type: list
annotations: []
slots: {}
CustomerTransportationModeFilter:
type: object
description: Filter options for CustomerTransportationMode enum
properties:
equalTo:
$ref: '#/components/schemas/CustomerTransportationMode'
description: Exact match
notEqualTo:
$ref: '#/components/schemas/CustomerTransportationMode'
description: Not equal to
in:
type: array
items:
$ref: '#/components/schemas/CustomerTransportationMode'
description: Matches any value in the array
notIn:
type: array
items:
$ref: '#/components/schemas/CustomerTransportationMode'
description: Does not match any value in the array
isNull:
type: boolean
description: Field is null (true) or not null (false)
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'
# --- truncated at 32 KB (142 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mvmnt/refs/heads/main/openapi/mvmnt-customers-api-openapi.yml