Green Screens AI Quotes API
Quotes service v2 — list quotes, import and batch import. Spec version 2.0.0, 3 paths. NOT a superset of v1: the accept, reject, update, delete, shipper-search and lane-top-quotes operations live only in v1.
Quotes service v2 — list quotes, import and batch import. Spec version 2.0.0, 3 paths. NOT a superset of v1: the accept, reject, update, delete, shipper-search and lane-top-quotes operations live only in v1.
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-quotes-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/quotes/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: Quotes
version: 2.0.0
description: >-
Quotes service v2
Older version of this api exists. <a href="/quotes/v1/swagger/index.html" target="_blank">View v1 here</a>
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: Quotes
description: Endpoints to create, get and update quotes
paths:
/quotes:
get:
tags:
- Quotes
summary: Get quotes
description: Get quotes
operationId: quotesGetAll
security:
- bearerAuth: []
parameters:
- in: query
name: createdDateFrom
description: \'quote created date >= value\' filter
schema:
type: string
format: date
example: "2019-09-30"
- in: query
name: createdDateTo
description: \'quote created date <= value\' filter
schema:
type: string
format: date
example: "2019-12-30"
- in: query
name: page
description: |
The page to return items from.
Used for pagination
schema:
type: integer
minimum: 0
default: 0
example: 5
- in: query
name: perPage
description: |
The amount of items per page.
Used for pagination
schema:
type: integer
minimum: 1
maximum: 500
default: 20
example: 30
- in: query
name: currency
schema:
$ref: "#/components/schemas/Currency"
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/QuotesResponse"
"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
"404":
description: Item not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
examples:
error404Example:
value:
code: item_not_found
message: Item not found
"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
/quotes/import:
post:
tags:
- Quotes
summary: Import a quote
description: Import an external quote
operationId: quotesImport
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/QuotesImportRequest"
required: true
responses:
"201":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/QuotesImportResponse"
"400":
$ref: "#/paths/~1quotes/get/responses/400"
"401":
$ref: "#/paths/~1quotes/get/responses/401"
"403":
$ref: "#/paths/~1quotes/get/responses/403"
"422":
$ref: "#/paths/~1quotes/get/responses/422"
"429":
$ref: "#/paths/~1quotes/get/responses/429"
"500":
$ref: "#/paths/~1quotes/get/responses/500"
/quotes/batch/import:
post:
tags:
- Quotes
summary: Import quotes in a batch
description: Import quotes in a batch
operationId: quotesBatchImport
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/QuotesBatchImportRequest"
required: true
responses:
"201":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/QuotesBatchImportResponse"
"400":
$ref: "#/paths/~1quotes/get/responses/400"
"401":
$ref: "#/paths/~1quotes/get/responses/401"
"403":
$ref: "#/paths/~1quotes/get/responses/403"
"422":
$ref: "#/paths/~1quotes/get/responses/422"
"429":
$ref: "#/paths/~1quotes/get/responses/429"
"500":
$ref: "#/paths/~1quotes/get/responses/500"
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
QuotesResponse:
type: object
description: Object containing an array of quotes
properties:
pagination:
type: object
description: Response pagination data
properties:
page:
type: integer
description: The number of the currently returned page
minimum: 0
example: 12
perPage:
type: integer
description: The maximum number of items per page
minimum: 1
maximum: 500
example: 20
required:
- page
- perPage
items:
type: array
description: Array of quotes
items:
$ref: "#/components/schemas/QuoteObject"
required:
- pagination
- items
QuotePatchRequest:
type: object
properties:
status:
$ref: "#/components/schemas/QuoteStatus"
wasViewed:
type: boolean
description: |
States whether the quote was viewed by a broker after being
accepted or rejected by a customer.
example: false
rejectionReason:
type: string
description: Comment about why the quote was rejected
example: Customer rejected, because price was too high
expirationDateTime:
type: string
format: date-time
description: Quote expiration date and time in time zone of the user
example: "2020-10-12T16:00:00+05:00"
QuoteFullUpdateRequest:
type: object
properties:
shipper:
$ref: "#/components/schemas/Shipper"
userEmail:
type: string
description: Email of the user who will be the owner/creator of the quote
example: buddy@greenscreens.ai
transportTypeGroup:
type: string
enum:
- VAN
- REEFER
- FLATBED
- HOTSHOT
description: Transport type group
example: VAN
stops:
type: array
items:
$ref: "#/components/schemas/StopInput"
distance:
type: number
format: float
description: Distance of the route (in miles)
example: 289
expirationDateTime:
type: string
format: date-time
description: Quote expiration date and time in time zone of the user
example: "2020-10-12T16:00:00+05:00"
pickupDateTime:
type: string
format: date-time
description: Related load pickup date
example: "2020-10-13T16:00:00Z"
deliveredDateTime:
type: string
format: date-time
description: Related load delivery date
example: "2020-10-14T16:00:00Z"
weight:
type: number
format: float
description: Total cargo weight in lb
example: 22000
costs:
$ref: "#/components/schemas/CostsInput"
currency:
$ref: "#/components/schemas/Currency"
required:
- userEmail
- transportTypeGroup
- stops
- pickupDateTime
- shipper
- costs
QuoteObject:
type: object
description: Object representing a quote in our system
properties:
id:
type: integer
format: int64
description: Id of the quote. Specific to our system and unique for every quote.
example: 12345
key:
type: string
description: Unique key used to create a link to the quote in the platform
example: afd124faf-12raf-qfa2q-afvawf
quoteId:
type: string
description: Unique quote id from the customers system
example: Q#54321
loadId:
type: string
description: Id of the load associated with this quote
example: "12345"
userEmail:
type: string
description: Email of the user who is the owner/creator of the quote
example: buddy@greenscreens.ai
transportType:
type: string
description: Transport type (original transport type used in provider TMS)
example: VR
transportTypeGroup:
$ref: "#/components/schemas/TransportTypeGroup"
stops:
$ref: "#/components/schemas/Stops"
distance:
type: number
format: float
description: Distance of the route (in miles)
example: 289
pickupDateTime:
type: string
format: date-time
description: Related load pickup date
example: "2020-09-14T16:00:00Z"
deliveredDateTime:
type: string
format: date-time
description: Related load delivery date
example: "2020-09-14T16:00:00Z"
expirationDateTime:
type: string
format: date-time
description: Expiration date and time in UTC time zone
example: "2020-09-14T16:00:00Z"
quoteDateTime:
type: string
format: date-time
description: When the quote was sent to the customer
example: "2020-10-13T16:00:00Z"
defaultedQuoteDateTime:
type: string
format: date-time
description: |
Same as `quoteDateTime` but defaulted to `createdDateTime`,
if `quoteDateTime` is not available
example: "2020-09-14T16:00:00Z"
createdDateTime:
type: string
format: date-time
description: Quote creation date
example: "2020-09-14T16:00:00Z"
status:
$ref: "#/components/schemas/QuoteStatus"
weight:
type: number
format: float
description: Total cargo weight in lb
example: 22000
predictions:
$ref: "#/components/schemas/Predictions"
wasViewed:
type: boolean
description: |
Signifies whether the quote was viewed by a broker after being
accepted or rejected by a customer.
example: false
rejectionReason:
type: string
description: Comment about why the quote was rejected
example: Rejecting, because price is too high
shipper:
$ref: "#/components/schemas/Shipper"
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, etc.)
example: SPOT
pricingTypeGroup:
$ref: "#/components/schemas/PricingTypeGroup"
contractDuration:
type: integer
description: Contract duration in weeks, if applicable
example: 5
numberOfLoads:
type: integer
description: |
Number of loads on the lane quoted or won:
* for the day if a spot quote
* for the duration of the contract if a primary or backup quote
example: 10
costs:
$ref: "#/components/schemas/Costs"
currency:
type: string
description: >
Currency of any monetary fields in this object (Three letter code,
ISO 4217)
example: USD
notes:
type: string
description: |
Optional free-text notes associated with this quote
example: Do not dispatch before Monday
required:
- id
- key
- userEmail
- transportTypeGroup
- stops
- pickupDateTime
- defaultedQuoteDateTime
- createdDateTime
- status
- wasViewed
- costs
- currency
Costs:
type: object
description: >
Quote costs.
**Linehaul cost and either total cost or acessorials have to be provided
for this object to be valid.**
properties:
linehaul:
type: number
description: Flat linehaul cost that the customer was quoted
example: 1200
accessorials:
$ref: "#/components/schemas/Accessorials"
total:
type: number
description: |
Flat total cost that the customer was quoted
(linehaul + accessorials)
example: 1500
required:
- linehaul
- accessorials
- total
CostsInput:
type: object
description: >
Quote costs.
**Linehaul cost and either total cost or acessorials have to be provided
for this object to be valid.**
properties:
linehaul:
type: number
description: Flat linehaul cost that the customer was quoted
example: 1200
accessorials:
$ref: "#/components/schemas/AccessorialsInput"
total:
type: number
description: |
Flat total cost that the customer was quoted
(linehaul + accessorials)
example: 1500
required:
- linehaul
Accessorials:
type: array
description: Quote accessorial list
items:
$ref: "#/components/schemas/Accessorial"
Accessorial:
type: object
description: Contains the quote accessorial information e.g. name and cost
properties:
name:
type: string
description: Accessorial name
example: Overweight
cost:
type: number
description: Flat accessorial cost
example: 200.5
required:
- name
- cost
AccessorialsInput:
type: array
description: Quote accessorial list
items:
$ref: "#/components/schemas/AccessorialInput"
AccessorialInput:
type: object
description: Contains the quote accessorial information e.g. name and cost
nullable: true
properties:
name:
type: string
description: Accessorial name
example: Overweight
cost:
type: number
description: Flat accessorial cost
example: 200.5
required:
- name
- cost
Stops:
type: array
description: Quote stop list
minItems: 2
items:
$ref: "#/components/schemas/Stop"
example:
- order: 0
address:
country: US
city: Red Bluff
state: CA
zip: "96080"
type: CITY
type: LOAD
appointmentDateTime: "2020-10-13T16:00:00Z"
- order: 1
address:
country: US
city: Redding
state: CA
zip: "96002"
type: ZIP
type: UNLOAD
appointmentDateTime: "2020-10-14T16:00:00Z"
StopsInputLaneTopQuotes:
type: array
description: Quote stop list
minItems: 2
items:
$ref: "#/components/schemas/StopInputLaneTopQuotes"
example:
- order: 0
address:
country: US
city: Red Bluff
state: CA
zip: "96080"
- order: 1
address:
country: US
city: Redding
state: CA
zip: "96002"
Stop:
type: object
description: Contains the quote stop information e.g. address
properties:
order:
type: integer
description: Stop order, starting from 0
example: 0
address:
$ref: "#/components/schemas/Address"
type:
type: string
description: |
Action performed with the cargo at this stop
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
example: "2020-10-13T16:00:00Z"
required:
- order
- address
StopInput:
type: object
description: Contains the stop information e.g. address
properties:
order:
type: integer
description: Stop order, starting from 0
example: 0
address:
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
state:
type: string
description: State
example: NY
city:
type: string
description: City
example: Schenectady
zip:
type: string
description: Zip
example: "12345"
required:
- country
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"
required:
- order
- address
StopInputLaneTopQuotes:
type: object
description: Contains the quote stop information e.g. address
properties:
order:
type: integer
description: Stop order, starting from 0
example: 0
address:
$ref: "#/components/schemas/AddressInputLaneTopQuotes"
required:
- order
- address
Address:
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
state:
type: string
description: state
example: NY
city:
type: string
description: city
example: Schenectady
zip:
type: string
description: zip
example: "12345"
type:
type: string
enum:
- CITY
- ZIP
example: ZIP
description: Type of address. Defaults to ZIP if not provided.
default: ZIP
required:
- country
- type
AddressInput:
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
state:
type: string
description: state
example: NY
city:
type: string
description: city
example: Schenectady
zip:
type: string
description: zip
example: "12345"
required:
- country
AddressInputLaneTopQuotes:
type: object
description: |
Location specified by country, city, state and zip code
properties:
country:
type: string
description: Two letter country code in ISO 3166-1 alpha-2 format
example: US
state:
type: string
description: state
example: NY
city:
type: string
description: city
example: Schenectady
zip:
type: string
description: zip
example: "12345"
required:
- country
- state
- city
- zip
Shipper:
type: object
description: Shipper data
properties:
id:
type: string
description: Customer TMS ID of the shipper profile associated with this quote
example: "64378901"
name:
type: string
description: Shipper company name
example: Walmart
phone:
type: string
description: Shipper contact phone number
example: "4112228888"
email:
type: string
description: Shipper contact email
example: test@greenscreens.ai
Predictions:
type: object
description: |
Predictions made for this quote.
The fields in this object are populated asynchronously,
so there might be a period in time when you will not see any values.
properties:
company:
type: object
description: Company specific predictions
properties:
buy:
type: object
description: Buy cost related properties
properties:
target:
type: number
description: Flat buy cost that our system would suggest to use for buying such
a load
example: 1200
start:
type: number
description: Flat buy cost that our system would suggest to use as the lower
limit during bargaining with the carrier
example: 1200
high:
type: number
description: Flat buy cost that our system would suggest to use as the upper
limit during bargaining with the carrier
example: 1200
confidenceLevel:
type: integer
minimum: 0
maximum: 100
description: |
How confident the system is in the prediction it is making.
From 0 - lowest possible confidence\
To 100 - highest possible confidence
example: 65
sell:
type: object
description: Sell cost related properties
properties:
target:
type: number
description: Flat sell cost that our system would suggest to use for this quote
example: 1200
network:
type: object
description: Network predictions
properties:
buy:
type: object
description: Buy cost related properties
properties:
target:
type: number
description: Flat buy cost that our system would suggest to use for buying such
a load
example: 1200
confidenceLevel:
type: integer
minimum: 0
maximum: 100
description: |
How confident the system is in the prediction it is making.
From 0 - lowest possible confidence\
To 100 - highest possible confidence
example: 65
distance:
type: number
format: float
description: Distance of the route (in miles)
example: 289
QuotesImportRequest:
type: object
description: A body of the request to import a quote
properties:
quoteId:
type: string
description: |
Unique quote id from the customers system.
If a quote with the same quoteId will be found in our platform,
it will be updated. Otherwise a new quote will be created
example: Q#54321
loadId:
type: string
description: Id of the load associated with this quote
example: "12345"
userEmail:
type: string
description: Email of the user who will be the owner/creator of the quote
example: buddy@greenscreens.ai
transportType:
type: string
description: Transport type (original transport type used in provider TMS)
example: VR
transportTypeGroup:
$ref: "#/components/schemas/TransportTypeGroup"
stops:
type: array
items:
$ref: "#/components/schemas/StopInput"
distance:
type: number
format: float
description: Distance of the route (in miles)
example: 289
pickupDateTime:
type: string
format: date-time
description: Related load pickup date
example: "2020-10-13T16:00:00Z"
deliveredDateTime:
type: string
format: date-time
description: Related load delivery date
example: "2020-10-14T16:00:00Z"
expirationDateTime:
type: string
format: date-time
description: Quote expiration date and time in time zone of the user
example: "2020-10-12T16:00:00+05:00"
quoteDateTime:
type: string
format: date-time
description: When the quote was sent to the customer
example: "2020-10-13T16:00:00Z"
status:
$ref: "#/components/schemas/QuoteStatus"
rejectionReason:
type: string
description: Comment about why the quote was rejected
example: Rejecting, because price is too high
weight:
type: number
format: float
description: Total cargo weight in lb
example: 22000
shipper:
$ref: "#/components/schemas/Shipper"
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, etc.)
example: SPOT
pricingTypeGroup:
$ref: "#/components/schemas/PricingTypeGroup"
contractDuration:
type: integer
description: Contract duration in weeks, if applicable
example: 5
numberOfLoads:
type: integer
description: |
Number of loads on the lane quoted or won:
* for the day if a spot quote
* for the duration of the contract if a primary or backup quote
example: 10
costs:
$ref: "#/components/schemas/CostsInput"
currency:
$ref: "#/components/schemas/Currency"
required:
- quoteId
- userEmail
- transportType
- transportTypeGroup
- stops
- pickupDateTime
- status
- shipper
- pricingType
- pricingTypeGroup
- costs
- currency
QuotesImportResponse:
type: object
description: Quote import response
properties:
status:
type: string
enum:
- CREATED
- UPDATED
description: |
Quote creation status.
* CREATED - a new quote was created
* UPDATED - an existing quote was updated
example: CREATED
required:
- status
QuotesBatchImportRequest:
type: object
properties:
quotes:
type: array
description: List of quotes to import
items:
$ref: "#/components/schemas/QuotesImportRequest"
maxItems: 1000
required:
- quotes
QuotesBatchImportResponse:
type: object
properties:
responses:
type: array
description: List of quote import responses
items:
$ref: "#/components/schemas/QuotesBatchImportResponseItem"
required:
- responses
QuotesBatchImportResponseItem:
type: object
description: |
Response for this particular quote import attempt
properties:
quoteId:
type: string
description: Unique quote id from the customers system
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/green-screens-ai/refs/heads/main/openapi/green-screens-ai-quotes-api-openapi.yml