Green Screens AI Quotes API

Quotes service v2 View separately Try it in swagger Older version of this api exists. View v1 here

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.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/green-screens-ai-quotes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

green-screens-ai-quotes-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: Triumph Intelligence Connect Analytics Quotes API
  x-logo:
    url: https://static.greenscreens.ai/main-logo.svg
    backgroundColor: '#fafafa'
    altText: Triumph Intelligence
  description: "# Authentication\n\n\nTriumph Intelligence API offers OAuth2 Bearer JWT token based authentication.\n\n\nOAuth2 - an open protocol to allow secure authorization in a simple \nand standard method from web, mobile and desktop applications.\n\n\n# \n\n\n# \n\n\n# Direct link integration with Triumph Intelligence\n\nOne of the simplest ways to integrate Triumph Intelligence in to your app is by using the \ndirect link method.\n\nLink format:\n\n    https://intelligence.triumph.io/rates?originZip={}&destinationZip={}&transportType={}\n\n* originZip - 5 digit USA ZIP code of the origin point\n\n* destinationZip - 5 digit USA ZIP code of the destination point\n\n* transportType - one of supported equipment types VAN, REEFER or FLATBED\n\n* OPTIONAL: pickupDate - pickup date string in ISO format e.g. \"2022-04-06T08:00:00.000+03:00\" when not encoded\n\n* OPTIONAL: originCityState - city and state separated by a space symbol, signifying the origin point. \nCan be used instead of originZip if you do not have a zip code of the location. \n_Should not be used together with originZip._\n\n* OPTIONAL: destinationCityState - city and state separated by a space, signifying the destination point. \nCan be used instead of destinationZip if you do not have a zip code of the location. \n_Should not be used together with destinationZip._\n\n* OPTIONAL: customer - name of the customer company\n\n* OPTIONAL: commodity - description of the transported commodity\n\n* OPTIONAL: weight - weight of the load in lbs\n\n* OPTIONAL: deliveryDate - delivery date string in ISO format e.g. \"2022-04-06T08:00:00.000+03:00\" when not encoded\n\n* OPTIONAL: extraStops - any extra stops between origin and destination. Value is an array of strings with up to 10 elements\nin the format of `{order}_{type}_{country}_{address}` \ntypes are `{numbers 0-9}_{CITY or ZIP}_{US or CA}_{if ZIP then 5+ digits, if CITY then city state string separated by space}`\n\nExamples (don't forget to encode the url):\n\n    https://intelligence.triumph.io/rates?originZip=12345&destinationZip=62345&transportType=VAN\n\n    https://intelligence.triumph.io/rates?originCityState=Wausau%20WI&destinationCityState=Evansville%20IN&transportType=VAN\n\n    https://intelligence.triumph.io/rates?originZip=12345&destinationCityState=Evansville%20IN&transportType=VAN\n\n    https://intelligence.triumph.io/rates?originZip=12345&destinationZip=62345&extraStops=0_ZIP_US_28086&extraStops=1_CITY_US_Portland%20OR&transportType=VAN\n\nExample usage:\n\n    <button\n      onclick=\"location.href='https://intelligence.triumph.io/rates?destinationZip=62345&originZip=12345&transportType=VAN'\"\n      type=\"button\">Quote new lane\n    <button>\n\n\n# \n\n\n# \n\n\n# Services and endpoints\n\nThe most versatile (and involving the most work) way of integration is by using our API directly.\nBelow you can find a list of servises and endpoints available for usage.\n"
  version: 1.3.3
  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: 'Quotes service v2


    <a href="/quotes/v2/redoc/" target="_blank">View separately</a>


    <a href="/quotes/v2/swagger/index.html" target="_blank">Try it in swagger</a>


    Older version of this api exists. <a href="/quotes/v1/redoc/" target="_blank">View v1 here</a>'
  x-displayName: Quotes
paths:
  /quotes:
    servers:
    - url: https://testapi.greenscreens.ai/v2
      description: Testing server (dev environment)
    - url: https://sandboxapi.greenscreens.ai/v2
      description: Sandbox server (as stable as production, but has no data)
    - url: https://api.greenscreens.ai/v2
      description: Production server (uses live data)
    get:
      tags:
      - Quotes
      summary: Get quotes
      description: Get quotes
      operationId: quotesGetAll
      security:
      - Quotes_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. \nUsed for pagination\n"
        schema:
          type: integer
          minimum: 0
          default: 0
          example: 5
      - in: query
        name: perPage
        description: "The amount of items per page. \nUsed for pagination\n"
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 20
          example: 30
      - in: query
        name: currency
        schema:
          type: string
          enum:
          - USD
          - CAD
          description: "Currency code in ISO 4217 format (three letter code, e.g. USD)\n\n_If not provided, defaults to the currency set in the profile \nof currently authenticated user (or currently authenticated company \nif there is no user or user profile setting)_\n"
          example: USD
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quotes_QuotesResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quotes_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/Quotes_Error'
              examples:
                error403Example:
                  value:
                    code: access_forbidden
                    message: Access is forbidden
        '404':
          description: Item not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quotes_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/Quotes_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/Quotes_Error'
              examples:
                error429TooManyRequests:
                  value:
                    code: too_many_requests
                    message: Request limit exceeded
        '500':
          description: Unhandled server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quotes_Error'
              examples:
                error500Example:
                  value:
                    code: internal_error
                    message: Internal server error
      x-codeSamples:
      - lang: Node + Request
        source: "const request = require('request');\n\nconst options = {\n  method: 'GET',\n  url: 'https://testapi.greenscreens.ai/v2/quotes',\n  qs: {\n    createdDateFrom: '2019-09-30',\n    createdDateTo: '2019-12-30',\n    page: '5',\n    perPage: '30',\n    currency: 'USD'\n  },\n  headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\nrequest(options, function (error, response, body) {\n  if (error) throw new Error(error);\n\n  console.log(body);\n});\n"
      - lang: Python + Requests
        source: 'import requests


          url = "https://testapi.greenscreens.ai/v2/quotes"


          querystring = {"createdDateFrom":"2019-09-30","createdDateTo":"2019-12-30","page":"5","perPage":"30","currency":"USD"}


          headers = {"Authorization": "Bearer REPLACE_BEARER_TOKEN"}


          response = requests.request("GET", url, headers=headers, params=querystring)


          print(response.text)'
      - lang: Php + Curl
        source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_URL => \"https://testapi.greenscreens.ai/v2/quotes?createdDateFrom=2019-09-30&createdDateTo=2019-12-30&page=5&perPage=30&currency=USD\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => \"\",\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 30,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => \"GET\",\n  CURLOPT_HTTPHEADER => [\n    \"Authorization: Bearer REPLACE_BEARER_TOKEN\"\n  ],\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n  echo \"cURL Error #:\" . $err;\n} else {\n  echo $response;\n}"
  /quotes/import:
    servers:
    - url: https://testapi.greenscreens.ai/v2
      description: Testing server (dev environment)
    - url: https://sandboxapi.greenscreens.ai/v2
      description: Sandbox server (as stable as production, but has no data)
    - url: https://api.greenscreens.ai/v2
      description: Production server (uses live data)
    post:
      tags:
      - Quotes
      summary: Import a quote
      description: Import an external quote
      operationId: quotesImport
      security:
      - Quotes_bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Quotes_QuotesImportRequest'
        required: true
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quotes_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'
      x-codeSamples:
      - lang: Node + Request
        source: "const request = require('request');\n\nconst options = {\n  method: 'POST',\n  url: 'https://testapi.greenscreens.ai/v2/quotes/import',\n  headers: {\n    'content-type': 'application/json',\n    Authorization: 'Bearer REPLACE_BEARER_TOKEN'\n  },\n  body: {\n    quoteId: 'Q#54321',\n    loadId: '12345',\n    userEmail: 'buddy@greenscreens.ai',\n    transportType: 'VR',\n    transportTypeGroup: 'VAN',\n    stops: [\n      {\n        order: 0,\n        address: {country: 'US', city: 'Red Bluff', state: 'CA', zip: '96080'},\n        type: 'LOAD',\n        appointmentDateTime: '2020-10-13T16:00:00Z'\n      },\n      {\n        order: 1,\n        address: {country: 'US', city: 'Redding', state: 'CA', zip: '96002'},\n        type: 'UNLOAD',\n        appointmentDateTime: '2020-10-14T16:00:00Z'\n      }\n    ],\n    distance: 289,\n    pickupDateTime: '2020-10-13T16:00:00Z',\n    deliveredDateTime: '2020-10-14T16:00:00Z',\n    expirationDateTime: '2020-10-12T16:00:00+05:00',\n    quoteDateTime: '2020-10-13T16:00:00Z',\n    status: 'WON',\n    rejectionReason: 'Rejecting, because price is too high',\n    weight: 22000,\n    shipper: {\n      id: '64378901',\n      name: 'Walmart',\n      phone: '4112228888',\n      email: 'test@greenscreens.ai'\n    },\n    pricingType: 'SPOT',\n    pricingTypeGroup: 'SPOT',\n    contractDuration: 5,\n    numberOfLoads: 10,\n    costs: {linehaul: 1200, accessorials: [{name: 'Overweight', cost: 200.5}], total: 1500},\n    currency: 'USD'\n  },\n  json: true\n};\n\nrequest(options, function (error, response, body) {\n  if (error) throw new Error(error);\n\n  console.log(body);\n});\n"
      - lang: Python + Requests
        source: "import requests\n\nurl = \"https://testapi.greenscreens.ai/v2/quotes/import\"\n\npayload = {\n    \"quoteId\": \"Q#54321\",\n    \"loadId\": \"12345\",\n    \"userEmail\": \"buddy@greenscreens.ai\",\n    \"transportType\": \"VR\",\n    \"transportTypeGroup\": \"VAN\",\n    \"stops\": [\n        {\n            \"order\": 0,\n            \"address\": {\n                \"country\": \"US\",\n                \"city\": \"Red Bluff\",\n                \"state\": \"CA\",\n                \"zip\": \"96080\"\n            },\n            \"type\": \"LOAD\",\n            \"appointmentDateTime\": \"2020-10-13T16:00:00Z\"\n        },\n        {\n            \"order\": 1,\n            \"address\": {\n                \"country\": \"US\",\n                \"city\": \"Redding\",\n                \"state\": \"CA\",\n                \"zip\": \"96002\"\n            },\n            \"type\": \"UNLOAD\",\n            \"appointmentDateTime\": \"2020-10-14T16:00:00Z\"\n        }\n    ],\n    \"distance\": 289,\n    \"pickupDateTime\": \"2020-10-13T16:00:00Z\",\n    \"deliveredDateTime\": \"2020-10-14T16:00:00Z\",\n    \"expirationDateTime\": \"2020-10-12T16:00:00+05:00\",\n    \"quoteDateTime\": \"2020-10-13T16:00:00Z\",\n    \"status\": \"WON\",\n    \"rejectionReason\": \"Rejecting, because price is too high\",\n    \"weight\": 22000,\n    \"shipper\": {\n        \"id\": \"64378901\",\n        \"name\": \"Walmart\",\n        \"phone\": \"4112228888\",\n        \"email\": \"test@greenscreens.ai\"\n    },\n    \"pricingType\": \"SPOT\",\n    \"pricingTypeGroup\": \"SPOT\",\n    \"contractDuration\": 5,\n    \"numberOfLoads\": 10,\n    \"costs\": {\n        \"linehaul\": 1200,\n        \"accessorials\": [\n            {\n                \"name\": \"Overweight\",\n                \"cost\": 200.5\n            }\n        ],\n        \"total\": 1500\n    },\n    \"currency\": \"USD\"\n}\nheaders = {\n    \"content-type\": \"application/json\",\n    \"Authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n}\n\nresponse = requests.request(\"POST\", url, json=payload, headers=headers)\n\nprint(response.text)"
      - lang: Php + Curl
        source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_URL => \"https://testapi.greenscreens.ai/v2/quotes/import\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => \"\",\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 30,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => \"POST\",\n  CURLOPT_POSTFIELDS => \"{\\\"quoteId\\\":\\\"Q#54321\\\",\\\"loadId\\\":\\\"12345\\\",\\\"userEmail\\\":\\\"buddy@greenscreens.ai\\\",\\\"transportType\\\":\\\"VR\\\",\\\"transportTypeGroup\\\":\\\"VAN\\\",\\\"stops\\\":[{\\\"order\\\":0,\\\"address\\\":{\\\"country\\\":\\\"US\\\",\\\"city\\\":\\\"Red Bluff\\\",\\\"state\\\":\\\"CA\\\",\\\"zip\\\":\\\"96080\\\"},\\\"type\\\":\\\"LOAD\\\",\\\"appointmentDateTime\\\":\\\"2020-10-13T16:00:00Z\\\"},{\\\"order\\\":1,\\\"address\\\":{\\\"country\\\":\\\"US\\\",\\\"city\\\":\\\"Redding\\\",\\\"state\\\":\\\"CA\\\",\\\"zip\\\":\\\"96002\\\"},\\\"type\\\":\\\"UNLOAD\\\",\\\"appointmentDateTime\\\":\\\"2020-10-14T16:00:00Z\\\"}],\\\"distance\\\":289,\\\"pickupDateTime\\\":\\\"2020-10-13T16:00:00Z\\\",\\\"deliveredDateTime\\\":\\\"2020-10-14T16:00:00Z\\\",\\\"expirationDateTime\\\":\\\"2020-10-12T16:00:00+05:00\\\",\\\"quoteDateTime\\\":\\\"2020-10-13T16:00:00Z\\\",\\\"status\\\":\\\"WON\\\",\\\"rejectionReason\\\":\\\"Rejecting, because price is too high\\\",\\\"weight\\\":22000,\\\"shipper\\\":{\\\"id\\\":\\\"64378901\\\",\\\"name\\\":\\\"Walmart\\\",\\\"phone\\\":\\\"4112228888\\\",\\\"email\\\":\\\"test@greenscreens.ai\\\"},\\\"pricingType\\\":\\\"SPOT\\\",\\\"pricingTypeGroup\\\":\\\"SPOT\\\",\\\"contractDuration\\\":5,\\\"numberOfLoads\\\":10,\\\"costs\\\":{\\\"linehaul\\\":1200,\\\"accessorials\\\":[{\\\"name\\\":\\\"Overweight\\\",\\\"cost\\\":200.5}],\\\"total\\\":1500},\\\"currency\\\":\\\"USD\\\"}\",\n  CURLOPT_HTTPHEADER => [\n    \"Authorization: Bearer REPLACE_BEARER_TOKEN\",\n    \"content-type: application/json\"\n  ],\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n  echo \"cURL Error #:\" . $err;\n} else {\n  echo $response;\n}"
  /quotes/batch/import:
    servers:
    - url: https://testapi.greenscreens.ai/v2
      description: Testing server (dev environment)
    - url: https://sandboxapi.greenscreens.ai/v2
      description: Sandbox server (as stable as production, but has no data)
    - url: https://api.greenscreens.ai/v2
      description: Production server (uses live data)
    post:
      tags:
      - Quotes
      summary: Import quotes in a batch
      description: Import quotes in a batch
      operationId: quotesBatchImport
      security:
      - Quotes_bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Quotes_QuotesBatchImportRequest'
        required: true
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quotes_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'
      x-codeSamples:
      - lang: Node + Request
        source: "const request = require('request');\n\nconst options = {\n  method: 'POST',\n  url: 'https://testapi.greenscreens.ai/v2/quotes/batch/import',\n  headers: {\n    'content-type': 'application/json',\n    Authorization: 'Bearer REPLACE_BEARER_TOKEN'\n  },\n  body: {\n    quotes: [\n      {\n        quoteId: 'Q#54321',\n        loadId: '12345',\n        userEmail: 'buddy@greenscreens.ai',\n        transportType: 'VR',\n        transportTypeGroup: 'VAN',\n        stops: [\n          {\n            order: 0,\n            address: {country: 'US', city: 'Red Bluff', state: 'CA', zip: '96080'},\n            type: 'LOAD',\n            appointmentDateTime: '2020-10-13T16:00:00Z'\n          },\n          {\n            order: 1,\n            address: {country: 'US', city: 'Redding', state: 'CA', zip: '96002'},\n            type: 'UNLOAD',\n            appointmentDateTime: '2020-10-14T16:00:00Z'\n          }\n        ],\n        distance: 289,\n        pickupDateTime: '2020-10-13T16:00:00Z',\n        deliveredDateTime: '2020-10-14T16:00:00Z',\n        expirationDateTime: '2020-10-12T16:00:00+05:00',\n        quoteDateTime: '2020-10-13T16:00:00Z',\n        status: 'WON',\n        rejectionReason: 'Rejecting, because price is too high',\n        weight: 22000,\n        shipper: {\n          id: '64378901',\n          name: 'Walmart',\n          phone: '4112228888',\n          email: 'test@greenscreens.ai'\n        },\n        pricingType: 'SPOT',\n        pricingTypeGroup: 'SPOT',\n        contractDuration: 5,\n        numberOfLoads: 10,\n        costs: {linehaul: 1200, accessorials: [{name: 'Overweight', cost: 200.5}], total: 1500},\n        currency: 'USD'\n      }\n    ]\n  },\n  json: true\n};\n\nrequest(options, function (error, response, body) {\n  if (error) throw new Error(error);\n\n  console.log(body);\n});\n"
      - lang: Python + Requests
        source: "import requests\n\nurl = \"https://testapi.greenscreens.ai/v2/quotes/batch/import\"\n\npayload = {\"quotes\": [\n        {\n            \"quoteId\": \"Q#54321\",\n            \"loadId\": \"12345\",\n            \"userEmail\": \"buddy@greenscreens.ai\",\n            \"transportType\": \"VR\",\n            \"transportTypeGroup\": \"VAN\",\n            \"stops\": [\n                {\n                    \"order\": 0,\n                    \"address\": {\n                        \"country\": \"US\",\n                        \"city\": \"Red Bluff\",\n                        \"state\": \"CA\",\n                        \"zip\": \"96080\"\n                    },\n                    \"type\": \"LOAD\",\n                    \"appointmentDateTime\": \"2020-10-13T16:00:00Z\"\n                },\n                {\n                    \"order\": 1,\n                    \"address\": {\n                        \"country\": \"US\",\n                        \"city\": \"Redding\",\n                        \"state\": \"CA\",\n                        \"zip\": \"96002\"\n                    },\n                    \"type\": \"UNLOAD\",\n                    \"appointmentDateTime\": \"2020-10-14T16:00:00Z\"\n                }\n            ],\n            \"distance\": 289,\n            \"pickupDateTime\": \"2020-10-13T16:00:00Z\",\n            \"deliveredDateTime\": \"2020-10-14T16:00:00Z\",\n            \"expirationDateTime\": \"2020-10-12T16:00:00+05:00\",\n            \"quoteDateTime\": \"2020-10-13T16:00:00Z\",\n            \"status\": \"WON\",\n            \"rejectionReason\": \"Rejecting, because price is too high\",\n            \"weight\": 22000,\n            \"shipper\": {\n                \"id\": \"64378901\",\n                \"name\": \"Walmart\",\n                \"phone\": \"4112228888\",\n                \"email\": \"test@greenscreens.ai\"\n            },\n            \"pricingType\": \"SPOT\",\n            \"pricingTypeGroup\": \"SPOT\",\n            \"contractDuration\": 5,\n            \"numberOfLoads\": 10,\n            \"costs\": {\n                \"linehaul\": 1200,\n                \"accessorials\": [\n                    {\n                        \"name\": \"Overweight\",\n                        \"cost\": 200.5\n                    }\n                ],\n                \"total\": 1500\n            },\n            \"currency\": \"USD\"\n        }\n    ]}\nheaders = {\n    \"content-type\": \"application/json\",\n    \"Authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n}\n\nresponse = requests.request(\"POST\", url, json=payload, headers=headers)\n\nprint(response.text)"
      - lang: Php + Curl
        source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_URL => \"https://testapi.greenscreens.ai/v2/quotes/batch/import\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => \"\",\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 30,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => \"POST\",\n  CURLOPT_POSTFIELDS => \"{\\\"quotes\\\":[{\\\"quoteId\\\":\\\"Q#54321\\\",\\\"loadId\\\":\\\"12345\\\",\\\"userEmail\\\":\\\"buddy@greenscreens.ai\\\",\\\"transportType\\\":\\\"VR\\\",\\\"transportTypeGroup\\\":\\\"VAN\\\",\\\"stops\\\":[{\\\"order\\\":0,\\\"address\\\":{\\\"country\\\":\\\"US\\\",\\\"city\\\":\\\"Red Bluff\\\",\\\"state\\\":\\\"CA\\\",\\\"zip\\\":\\\"96080\\\"},\\\"type\\\":\\\"LOAD\\\",\\\"appointmentDateTime\\\":\\\"2020-10-13T16:00:00Z\\\"},{\\\"order\\\":1,\\\"address\\\":{\\\"country\\\":\\\"US\\\",\\\"city\\\":\\\"Redding\\\",\\\"state\\\":\\\"CA\\\",\\\"zip\\\":\\\"96002\\\"},\\\"type\\\":\\\"UNLOAD\\\",\\\"appointmentDateTime\\\":\\\"2020-10-14T16:00:00Z\\\"}],\\\"distance\\\":289,\\\"pickupDateTime\\\":\\\"2020-10-13T16:00:00Z\\\",\\\"deliveredDateTime\\\":\\\"2020-10-14T16:00:00Z\\\",\\\"expirationDateTime\\\":\\\"2020-10-12T16:00:00+05:00\\\",\\\"quoteDateTime\\\":\\\"2020-10-13T16:00:00Z\\\",\\\"status\\\":\\\"WON\\\",\\\"rejectionReason\\\":\\\"Rejecting, because price is too high\\\",\\\"weight\\\":22000,\\\"shipper\\\":{\\\"id\\\":\\\"64378901\\\",\\\"name\\\":\\\"Walmart\\\",\\\"phone\\\":\\\"4112228888\\\",\\\"email\\\":\\\"test@greenscreens.ai\\\"},\\\"pricingType\\\":\\\"SPOT\\\",\\\"pricingTypeGroup\\\":\\\"SPOT\\\",\\\"contractDuration\\\":5,\\\"numberOfLoads\\\":10,\\\"costs\\\":{\\\"linehaul\\\":1200,\\\"accessorials\\\":[{\\\"name\\\":\\\"Overweight\\\",\\\"cost\\\":200.5}],\\\"total\\\":1500},\\\"currency\\\":\\\"USD\\\"}]}\",\n  CURLOPT_HTTPHEADER => [\n    \"Authorization: Bearer REPLACE_BEARER_TOKEN\",\n    \"content-type: application/json\"\n  ],\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n  echo \"cURL Error #:\" . $err;\n} else {\n  echo $response;\n}"
components:
  schemas:
    Quotes_AccessorialsInput:
      type: array
      description: Quote accessorial list
      items:
        $ref: '#/components/schemas/Quotes_AccessorialInput'
    Quotes_StopInput:
      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/Quotes_AddressInput'
        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
    Quotes_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. \n\nFrom 0 - lowest possible confidence\\\nTo 100 - highest possible confidence\n"
                  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. \n\nFrom 0 - lowest possible confidence\\\nTo 100 - highest possible confidence\n"
                  example: 65
        distance:
          type: number
          format: float
          description: Distance of the route (in miles)
          example: 289
    Quotes_CostsInput:
      type: object
      description: "Quote costs. \n\n**Linehaul cost and either total cost or acessorials have to be provided \nfor this object to be valid.**\n"
      properties:
        linehaul:
          type: number
          description: Flat linehaul cost that the customer was quoted
          example: 1200
        accessorials:
          $ref: '#/components/schemas/Quotes_AccessorialsInput'
        total:
          type: number
          description: "Flat total cost that the customer was quoted \n(linehaul + accessorials)\n"
          example: 1500
      required:
      - linehaul
    Quotes_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/Quotes_QuoteObject'
      required:
      - pagination
      - items
    Quotes_QuotesBatchImportRequest:
      type: object
      properties:
        quotes:
          type: array
          description: List of quotes to import
          items:
            $ref: '#/components/schemas/Quotes_QuotesImportRequest'
          maxItems: 1000
      required:
      - quotes
    Quotes_Accessorials:
      type: array
      description: Quote accessorial list
      items:
        $ref: '#/components/schemas/Quotes_Accessorial'
    Quotes_Error:
      type: object
      description: A common api error object
      properties:
        code:
          type: string
          description: unique string identifier of the error
        message:
          type: string
          description: human readable error message
      required:
      - code
      - message
      example:
        code: invalid_request
        message: Your ClientId is invalid
    Quotes_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
    Quotes_Error422UnprocessableEntityMulti:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        errors:
          type: array
          description: list of errors
          items:
            $ref: '#/components/schemas/Quotes_RequestValidationError'
      required:
      - code
      - message
      -

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/green-screens-ai/refs/heads/main/openapi/green-screens-ai-quotes-api-openapi.yml