Green Screens AI TMS API
TmsConnector service v2 — import loads, carriers and shippers, singly or in batches, from a broker transportation management system. Spec version 2.18.6, 6 paths. One-way ingestion with no published rollback.
TmsConnector service v2 — import loads, carriers and shippers, singly or in batches, from a broker transportation management system. Spec version 2.18.6, 6 paths. One-way ingestion with no published rollback.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/green-screens-ai-tms-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
# harvested: 2026-09-12
# method: searched
# source: https://connect.greenscreens.ai/tmsconnector/v2/openapi.yaml
# note: >-
# Verbatim first-party OpenAPI served from the provider's own documentation host connect.greenscreens.ai. Ownership confirmed: info.contact.email support@greenscreens.ai, x-logo static.greenscreens.ai, servers[] api.greenscreens.ai; termsOfService points at triumph.io because Triumph Financial acquired Greenscreens.ai (closed 2025) and the product now ships as Triumph Intelligence.
openapi: 3.0.2
info:
title: TmsConnector
version: 2.18.6
description: TmsConnector service v2
x-logo:
url: https://static.greenscreens.ai/main-logo.svg
backgroundColor: "#fafafa"
altText: Triumph Intelligence
termsOfService: https://triumph.io/terms-of-service/
contact:
name: API Support
email: support@greenscreens.ai
url: https://connect.intelligence.triumph.io
tags:
- name: TMS
description: Endpoints to get and update information from TMS
paths:
/tms/import-load:
post:
tags:
- TMS
summary: Import load
security:
- bearerAuth: []
description: Import a new load or update an existing one
operationId: tmsImportLoad
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ImportLoadRequest"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ImportLoadResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
examples:
error400Example:
value:
code: missing_required_parameter
message: Your request was missing a {par_name} parameter
"401":
description: Unauthenticated
"403":
description: Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
examples:
error403Example:
value:
code: access_forbidden
message: Access is forbidden
"422":
description: Unprocessable Entity with multiple errors.
content:
application/json:
schema:
$ref: "#/components/schemas/Error422UnprocessableEntityMulti"
examples:
error422MultiExample:
value:
code: request_validation
message: You have one or more errors in request structure
errors:
- field: carrierName
message: field contains wrong data type (int), should be string
value: "22"
- field: shipperId
message: "shipperId: must not be null"
value: null
- field: loadSource.loadId
message: "loadId: must not be null"
value: null
"429":
description: Too Many Requests
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
examples:
error429TooManyRequests:
value:
code: too_many_requests
message: Request limit exceeded
"500":
description: Unhandled server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
examples:
error500Example:
value:
code: internal_error
message: Internal server error
/tms/batch/import-load:
post:
tags:
- TMS
summary: Imports loads in batches
security:
- bearerAuth: []
description: Used to import and/or update loads in batches
operationId: tmsBatchImportLoad
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchImportLoadRequest"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BatchImportLoadResponse"
"400":
$ref: "#/paths/~1tms~1import-load/post/responses/400"
"401":
$ref: "#/paths/~1tms~1import-load/post/responses/401"
"403":
$ref: "#/paths/~1tms~1import-load/post/responses/403"
"422":
$ref: "#/paths/~1tms~1import-load/post/responses/422"
"429":
$ref: "#/paths/~1tms~1import-load/post/responses/429"
"500":
$ref: "#/paths/~1tms~1import-load/post/responses/500"
/tms/import-carrier:
post:
tags:
- TMS
summary: Import carrier
security:
- bearerAuth: []
description: Import a new carrier or update an existing one
operationId: tmsImportCarrier
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CarrierProfile"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ImportProfileResponse"
"400":
$ref: "#/paths/~1tms~1import-load/post/responses/400"
"401":
$ref: "#/paths/~1tms~1import-load/post/responses/401"
"403":
$ref: "#/paths/~1tms~1import-load/post/responses/403"
"422":
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
examples:
error422Example:
value:
code: missing_property
message: "Missing property: body"
"429":
$ref: "#/paths/~1tms~1import-load/post/responses/429"
"500":
$ref: "#/paths/~1tms~1import-load/post/responses/500"
/tms/batch/import-carrier:
post:
tags:
- TMS
summary: Import carriers in batches
security:
- bearerAuth: []
description: Import a batch of carrier profiles
operationId: tmsBatchImportCarrier
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchImportCarrierRequest"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BatchImportProfileResponse"
"400":
$ref: "#/paths/~1tms~1import-load/post/responses/400"
"401":
$ref: "#/paths/~1tms~1import-load/post/responses/401"
"403":
$ref: "#/paths/~1tms~1import-load/post/responses/403"
"422":
$ref: "#/paths/~1tms~1import-carrier/post/responses/422"
"429":
$ref: "#/paths/~1tms~1import-load/post/responses/429"
"500":
$ref: "#/paths/~1tms~1import-load/post/responses/500"
/tms/import-shipper:
post:
tags:
- TMS
summary: Import shipper
security:
- bearerAuth: []
description: Import a new shipper or update an existing one
operationId: tmsShipper
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ShipperProfile"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ImportProfileResponse"
"400":
$ref: "#/paths/~1tms~1import-load/post/responses/400"
"401":
$ref: "#/paths/~1tms~1import-load/post/responses/401"
"403":
$ref: "#/paths/~1tms~1import-load/post/responses/403"
"422":
$ref: "#/paths/~1tms~1import-carrier/post/responses/422"
"429":
$ref: "#/paths/~1tms~1import-load/post/responses/429"
"500":
$ref: "#/paths/~1tms~1import-load/post/responses/500"
/tms/batch/import-shipper:
post:
tags:
- TMS
summary: Import shippers in batches
security:
- bearerAuth: []
description: Import a batch of shipper profiles
operationId: tmsBatchImportShipper
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchImportShipperRequest"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BatchImportProfileResponse"
"400":
$ref: "#/paths/~1tms~1import-load/post/responses/400"
"401":
$ref: "#/paths/~1tms~1import-load/post/responses/401"
"403":
$ref: "#/paths/~1tms~1import-load/post/responses/403"
"422":
$ref: "#/paths/~1tms~1import-carrier/post/responses/422"
"429":
$ref: "#/paths/~1tms~1import-load/post/responses/429"
"500":
$ref: "#/paths/~1tms~1import-load/post/responses/500"
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
ImportLoadRequest:
type: object
x-parent: true
properties:
loadId:
type: string
description: >
Unique load id from external TMS.
If a load with same loadId will be found in our platform during import,
it will be updated. Otherwise a new load will be created.
example: "12345"
origin:
$ref: "#/components/schemas/StopLocation"
destination:
$ref: "#/components/schemas/StopLocation"
extraStops:
$ref: "#/components/schemas/ExtraStops"
rate:
$ref: "#/components/schemas/Rate"
pickupDate:
type: string
format: date-time
description: >
Pick up date in ISO date format in the time zone of the pick up
location
example: "2021-09-21T13:00:00-04:00"
deliveredDate:
type: string
format: date-time
description: >
Delivery date in ISO date format in the time zone of the drop off
location
example: "2021-09-22T18:00:00-04:00"
transportType:
type: string
description: Transport type (original transport type used in provider TMS)
example: VR
transportTypeGroup:
$ref: "#/components/schemas/TransportTypeGroup"
transportMode:
type: string
enum:
- FTL
- LTL
- PARCEL
- INTERMODAL
- OTHER
description: Transport mode
default: FTL
example: FTL
status:
type: string
enum:
- OPEN
- COVERED
- PICKUP
- LOADED
- STOP
- DROPOFF
- DELIVERED
- TENDER_REJECTED
- CLOSED
- CANCELED
- OTHER
description: |
Load status.
* OPEN - Created
* COVERED - Carrier assigned
* PICKUP - On the pickup stop
* LOADED - In transit
* STOP - On the extra stop
* DROPOFF - On the drop off stop
* DELIVERED - Delivered
* TENDER_REJECTED - Tender is rejected
* CLOSED - All money paid. Processing over
* CANCELED - Canceled
* OTHER - Any other status, not mentioned in this enum
example: OPEN
details:
$ref: "#/components/schemas/Details"
shipper:
$ref: "#/components/schemas/Shipper"
carrier:
$ref: "#/components/schemas/Carrier"
required:
- loadId
- origin
- destination
- rate
- pickupDate
- transportTypeGroup
- transportType
ImportLoadResponse:
type: object
properties:
id:
type: string
description: Id of the load used to identify it in our platform
example: c6447366-9700-4851-854b-2bb41f03cde0
loadId:
type: string
description: Id of the load provided by the client in the import request
example: pr0-003
status:
type: string
enum:
- CREATED
- UPDATED
description: >
Result of the load import operation:
* CREATED - means that a new load was created
* UPDATED - means that a load with the same loadId was found and updated
example: CREATED
required:
- id
- loadId
- status
ImportLoadForProviderRequest:
type: object
properties:
brokerId:
type: string
description: >
Id of the company that you want the load to be imported in
to. (this is an id you receive when registering a new company with
us)
example: 6F9619FF-8B86-D011-B42D-00CF4FC964FF
required:
- brokerId
allOf:
- $ref: "#/components/schemas/ImportLoadRequest"
BatchImportLoadRequest:
type: object
x-parent: true
properties:
loads:
type: array
description: List of loads to import or update
items:
$ref: "#/components/schemas/ImportLoadRequest"
required:
- loads
BatchImportLoadResponse:
type: object
properties:
responses:
type: array
description: List of load batch import results
items:
$ref: "#/components/schemas/BatchImportLoadResponseItem"
required:
- responses
BatchImportLoadResponseItem:
type: object
description: Import result data for a particular load from the imported batch
properties:
id:
type: string
description: Load Id in the platform
example: c6447366-9700-4851-854b-2bb41f03cde0
loadId:
type: string
description: Unique internal load identifier from TMS
example: pr0-003
status:
type: string
enum:
- CREATED
- UPDATED
- ERROR
description: |
Load import status.
* CREATED - a new load was imported
* UPDATED - an existing load was updated
* ERROR - an error occurred during load import
example: CREATED
code:
type: string
description: When status is ERROR, contains a unique string identifier of the
error
example: validation_errors_occured
message:
type: string
description: When status is ERROR, contains a human readable error message
example: Validation errors occured, check errors array for details
errors:
type: array
description: A list of validation errors that occurred during import.
items:
$ref: "#/components/schemas/RequestValidationError"
required:
- id
- loadId
- status
BatchImportLoadForProviderRequest:
type: object
properties:
brokerId:
type: string
description: >
Id of the company that you want the load batch to be imported in
to. (this is an id you receive when registering a new company with
us)
example: 6F9619FF-8B86-D011-B42D-00CF4FC964FF
required:
- brokerId
allOf:
- $ref: "#/components/schemas/BatchImportLoadRequest"
BatchImportCarrierRequest:
type: object
properties:
carriers:
type: array
description: List of carriers to import or update
items:
$ref: "#/components/schemas/CarrierProfile"
required:
- carriers
BatchImportShipperRequest:
type: object
properties:
shippers:
type: array
description: List of shipper profiles to import or update
items:
$ref: "#/components/schemas/ShipperProfile"
required:
- shippers
BatchImportProfileResponse:
type: object
properties:
responses:
type: array
description: List of profile batch import results
items:
$ref: "#/components/schemas/BatchImportProfileResponseItem"
required:
- responses
BatchImportProfileResponseItem:
type: object
description: Import result data for a particular profile from the imported batch
properties:
id:
type: string
description: Id of the profile used to identify it in our platform
example: c6447366-9700-4851-854b-2bb41f03cde0
profileId:
type: string
description: Id of the profile provided by the client in the import request
example: pr0-003
status:
type: string
enum:
- CREATED
- UPDATED
- ERROR
description: >
Result of the profile import operation:
* CREATED - means that a new profile was created
* UPDATED - means that a profile with the same profileId was found and updated
* ERROR - an error occurred during profile import
example: CREATED
code:
type: string
description: When status is ERROR, contains a unique string identifier of the
error
example: validation_errors_occured
message:
type: string
description: When status is ERROR, contains a human readable error message
example: Validation errors occured, check errors array for details
errors:
type: array
description: A list of validation errors that occurred during import.
items:
$ref: "#/components/schemas/RequestValidationError"
required:
- profileId
- status
Rate:
type: object
description: Load rate data
properties:
totalShipperLinehaulCost:
type: number
minimum: 0
description: |
Original agreed to price with the shipper.
Including fuel.
No accessorials
example: 1176
totalLinehaulCost:
type: number
minimum: 0
description: |
Load linehaul cost for the carrier.
Including fuel.
No accessorials.
example: 956
totalFuelCost:
type: number
minimum: 0
description: Fuel surcharge for the load
example: 45
accessorials:
$ref: "#/components/schemas/Accessorials"
totalShipperCost:
type: number
minimum: 0
description: Total load cost for shipper including fuel and accessorials
example: 1276
totalCarrierCost:
type: number
minimum: 0
description: Total load cost for carrier including fuel and accessorials
example: 1130
currency:
type: string
description: >
Currency in which the costs were provided (ISO 4217). Defaults to
USD.
example: USD
required:
- totalLinehaulCost
Details:
type: object
description: Additional optional data about the load.
properties:
distance:
type: number
format: float
description: |
Distance between origin and destination. In miles.
example: 434
miles:
type: number
format: float
description: >
Total miles between origin and destination (this field is
deprecated, use 'distance' instead)
example: 434
deprecated: true
commodity:
type: string
description: Commodity discription in free form
example: Racks
weight:
type: number
format: float
description: Total cargo weight in lb
example: 22000
tenderedDate:
type: string
format: date-time
description: Date when load was tendered
example: "2020-01-11T16:00:00Z"
bookedDate:
type: string
format: date-time
description: Date when carrier was assigned to the load
example: "2020-01-11T16:00:00Z"
tordFlag:
type: boolean
description: \"Truck order not used\" flag
example: false
hazmat:
type: boolean
description: Hazmat endorsement is needed for this load
example: false
hotshot:
type: boolean
description: This signifies whether hotshot is used
example: false
teamDrive:
type: boolean
description: Signifies whether team drivers are needed for the load
example: false
overdimensional:
type: boolean
description: Signifies whether the load is overdimensional or not
example: false
dedicatedCarrierContract:
type: boolean
description: Signifies whether there was a dedicated contract with the carrier
on the load
example: false
asset:
type: boolean
description: Signifies whether the load is an asset load
example: false
pricingType:
type: string
description: >
How this shipment was priced to the shipper according to your
methodology
(Primary, Backup, Spot, Spot_api, Spot_EDI, Primary_cost_plus, Contract, etc.)
example: Spot
pricingTypeGroup:
$ref: "#/components/schemas/PricingTypeGroup"
carrierAccountManager:
type: string
description: |
Carrier account manager. Aka Buy side rep or Operational rep.
The person that found/bought carrier services for this shipment.
example: John Doe
shipperAccountManager:
type: string
description: >
Shipper account manager. Aka Account Manager.
The person that "owns" the ongoing care and support of the shipper/customer
that this shipment belongs to.
Sometimes this manager is also the Sales manager.
example: John Doe
salesManager:
type: string
description: >
Sales manager.
The person that made the sale (found the shipper/customer and signed him).
Can sometimes be the same person who is the Shipper account manager.
example: John Doe
userGroupId:
type: string
description: |
A unique identifier (id) of a user group,
that this load belongs to. e.g. Main company or an Agency
example: Main office
office:
type: string
description: |
Name of an office in your company that this load belongs to
example: Main office
Carrier:
type: object
description: Carrier data
properties:
id:
type: string
description: Carrier ID
example: "12345"
name:
type: string
description: Carrier company name
example: Carrier company
required:
- id
Shipper:
type: object
description: Shipper data
properties:
id:
type: string
description: Shipper ID
example: "12345"
name:
type: string
description: Shipper company name
example: Shipper company
required:
- id
ExtraStops:
type: array
items:
$ref: "#/components/schemas/ExtraStop"
description: >
Any extra stops along the route between the origin and destination points
example:
- order: 0
address:
country: US
city: Red Bluff
state: CA
zip: "96080"
type: LOAD
appointmentDateTime: "2020-10-14T16:00:00Z"
- order: 1
address:
country: US
city: Redding
state: CA
zip: "96002"
type: UNLOAD
appointmentDateTime: "2020-10-15T16:00:00Z"
ExtraStop:
type: object
description: Extra stop
properties:
order:
type: integer
description: Extra stop order, starting from 0
example: 0
address:
$ref: "#/components/schemas/ExtraStopAddress"
type:
type: string
description: |
Action performed with the cargo at this stop.
Leave this field empty if you do not know the stop type.
enum:
- LOAD
- UNLOAD
- BOTH
example: LOAD
appointmentDateTime:
type: string
format: date-time
description: |
Date and time when the truck has to arrive at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T16:00:00Z"
scheduledAppointmentStartedAt:
type: string
format: date-time
description: |
Start of the scheduled appointment window at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T09:00:00Z"
scheduledAppointmentEndedAt:
type: string
format: date-time
description: |
End of the scheduled appointment window at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T11:00:00Z"
arrivedAt:
type: string
format: date-time
description: |
Actual arrival date and time at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T09:15:00Z"
departedAt:
type: string
format: date-time
description: |
Actual departure date and time from this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T10:45:00Z"
required:
- order
- address
ExtraStopAddress:
type: object
description: >
Location specified by country, city, state and zip code.
* Country is required
* Either city-state pair or zip code is required
* All four parameters can be passed together
(in case of city-state pair our platform will determine the zip code
and in case of a zip code, our platform will determine the city and the state)
properties:
country:
type: string
description: Two letter country code in ISO 3166-1 alpha-2 format
example: US
city:
type: string
description: City name
example: Sacramento
state:
type: string
description: Two letter state code
example: CA
zip:
type: string
description: Zip code
example: "95814"
required:
- country
StopLocation:
type: object
description: >
Location specified by country, city, state and zip code.
* Country is required
* Either city-state pair or zip code is required
* All four parameters can be passed together
(in case of city-state pair our platform will determine the zip code
and in case of a zip code, our platform will determine the city and the state)
properties:
country:
type: string
description: Two letter country code in ISO 3166-1 alpha-2 format
example: US
city:
type: string
description: City name
example: Sacramento
state:
type: string
description: Two letter state code
example: CA
zip:
type: string
description: Zip code
example: "95814"
appointmentDateTime:
type: string
format: date-time
description: |
Date and time when the truck has to arrive at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T09:00:00Z"
scheduledAppointmentStartedAt:
type: string
format: date-time
description: |
Start of the scheduled appointment window at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T09:00:00Z"
scheduledAppointmentEndedAt:
type: string
format: date-time
description: |
End of the scheduled appointment window at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T11:00:00Z"
arrivedAt:
type: string
format: date-time
description: |
Actual arrival date and time at this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T09:15:00Z"
departedAt:
type: string
format: date-time
description: |
Actual departure date and time from this stop.
Provide the time zone of the stop location if possible.
example: "2020-10-13T10:45:00Z"
required:
- country
CarrierProfile:
type: object
x-parent: true
properties:
profileId:
type: string
description: Profile id
example: "13441524"
companyName:
type: string
description: Company name
example: Carggo
legalName:
type: string
description: The official name of entity that owns a business
example: Carggo
mc:
type: string
description: Operating authority number assigned by the FMCSA to both carriers
and brokers
example: "122356"
dot:
type: string
description: USDOT number assigned by the FMCSA to companies that operate
commercial vehicles
example: "87650005"
scac:
type: string
description: Standard Carrier Alpha Code to identify vessel operating common
carriers
example: CGGK
contact:
$ref: "#/components/schemas/ContactObject"
status:
$ref: "#/components/schemas/ProfileStatus"
required:
- profileId
- companyName
ContactObject:
type: object
description: Contact data
properties:
name:
type: string
description: Contact name
example: John
phoneNumber:
type: string
description: Contact phone number
example: "121331343"
email:
type: string
description: Contact email
example: my@email.com
CarrierProfileForProvider:
type: object
properties:
brokerId:
type: string
description: >
Id of the company that you want the carrier to be imported in
to. (this is an id you receive when registering a new company with
us)
example: 6F9619FF-8B86-D011-B42D-00CF4FC964FF
required:
- brokerId
allOf:
- $ref: "#/components/schemas/CarrierProfile"
ImportProfileResponse:
type: object
properties:
id:
type: string
description: Id of the profile used to identify it in our platform
example: c
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/green-screens-ai/refs/heads/main/openapi/green-screens-ai-tms-api-openapi.yml