FRAYT match estimates API

The match estimates API from FRAYT — 2 operation(s) for match estimates.

Operations 2

POST /api/v2.2/matches/estimate Create an estimate for a Match without authorizing #
PATCH /api/v2.2/matches/estimate/{id} Update and/or authorize a Match estimate #

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/frayt-match-estimates-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 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.

OpenAPI Specification

frayt-match-estimates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FRAYT match estimates API
  version: '2.2'
  description: "<h2>Introduction</h2>\n<p>Welcome to the FRAYT's REST API.  Each endpoint is documented individually, and the endpoints are categorized by the resource that they primarily affect (Matches, and OAuth). By following the outlined schema of each endpoint, our API allows you to integrate FRAYT's logistics services seamlessly into your application.</p>\n\n<h3>FRAYT Terminology</h3>\n  <p>The logistics industry tends to have a wide variety of terms for a single item. So let's make sure we define our terms before getting into the API:</p>\n    <ul>\n      <li><b>Match:</b> this is an individual order placed in the FRAYT system for a driver to deliver</li>\n      <li><b>Estimate:</b> this provides a dollar amount in the response prior to it becoming a match. Estimates can be authorized into matches by passing the same payload but to the matches endpoint</li>\n    </ul>\n\n<h3>FRAYT Workflows</h3>\n  <p>Now that we have our terms defined, let's paint a bigger picture of what the life of a match looks like. These examples are the most common but are by no means exhaustive.</p>\n    <ul>\n      <li><b>Golden Path:</b> Pending (estimate)->Assigning Driver (live match to whole marketplace)->Accepted (by a driver)->En Route to Pickup->Arrived at Pickup->Picked Up<b><font color=\"red\">*</font></b>->Completed (delivered)->Charged</li>\n      <li><b>Unable to Pickup:</b> Pending->Assigning Driver->Accepted>En Route to Pickup->Arrived at Pickup->Unable to Pickup</li>\n      <li><b>Unable to Dropoff:</b> Pending->Assigning Driver->Accepted->En Route to Pickup->Arrived at Pickup->Picked Up<b><font color=\"red\">*</font></b>->En Route to Return->Arrived at Return->Charged</li>\n      <li><b>Preferred Driver:</b> Pending->Offered (only to preferred driver, not marketplace)->Accepted->En Route to Pickup->Arrived at Pickup->Picked Up<b><font color=\"red\">*</font></b>->Completed->Charged</li>\n      <p><i><b><font color=\"red\">*</font></b>Once a match is picked up, the match.stop state changes from Pending–>En Route–>Arrived–>Signed–>Delivered or Returned</i></p>\n    </ul>\n\n<h2> Endpoints and Requests</h2>\n<p>The FRAYT API endpoints are organized as <b>matches, match estimates, and oauth</b>. Once authentication has been made, the primary endpoint used will be the Matches endpoint for all estimates and matches.\n\nOur endpoints have a base url of https://api.frayt.com/api/v2.2/\n\nThe <b>schema</b> for each endpoint lists the properties <i>and provides a brief description to provide context for your mapping needs</i>. Additionally, <b>all required properties</b> are listed with a <font color=\"red\">red asterisk</font> (<font color=\"red\">*</font>).</p>\n\n\n  <h3> Authentication </h3>\n    <p>All FRAYT API requests require a valid bearer token. To generate your bearer token, you will need to hit the <a href=\"/docs/api/v2.2/#/oauth/FraytElixirWeb.API.OauthController.authenticate\" target=\"oauth\">OAuth endpoint</a> passing your Client ID and Secret in the payload.\n    To acquire your Client ID and Secret, reach out to the FRAYT team at <a href=\"mailto:dev@frayt.com\">dev@frayt.com</a>.</p>\n\n  <h3>Match Estimates </h3>\n    <p>The <a href=\"/docs/api/v2.2/#/match%20estimates/FraytElixirWeb.API.V2x2.MatchEstimateController.create\" target=\"match estimates\">match estimates endpoint</a> provides the ability to get a rate estimate, create a match, update an estimate, or turn an estimate into a match.</p>\n    <p>To receive an estimated rate for a delivery without creating the match itself, hit the POST match estimates endpoint.</p>\n    <p>To turn the estimate into a delivery (what we call a match at FRAYT), make a call to ouar PATCH match estimates endpoint.</p>\n\n  <h3>Matches </h3>\n    <p>The <a href=\"/docs/api/v2.2/#/matches/FraytElixirWeb.API.V2x2.MatchController.estimate\" target=\"matches\">matches endpoint</a> provides the ability to create a match, update a match, add a tip, or cancel a match.</p>\n    <p>To tender a delivery (what we call a match at FRAYT), pass the required payload to our POST matches endpoint.</p>\n    <p>To fetch data on a match at any point, hit the GET /matches/{id} endpoint.</p>\n\n\n<h2>Webhooks</h2>\n  <p>Webhook payloads are defined in the callbacks of each method below. You can find detailed state information under the response Schema of each callback.</p>\n  <p><i>To receive webhook updates from FRAYT, contact the FRAYT team for setup and configuration at <a href=\"mailto:dev@frayt.com\">dev@frayt.com</a></i></p>\n"
servers:
- url: https://api.frayt.com
  variables: {}
tags:
- name: match estimates
paths:
  /api/v2.2/matches/estimate:
    post:
      callbacks: {}
      description: This endpoint is for fetching an estimate to get a price quote. This can be updated or authorized at a later point using the `PATCH /matches/estimate/{id}` endpoint.
      operationId: FraytElixirWeb.API.V2x2.MatchEstimateController.create
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchRequest'
        description: Match params
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchResponse'
          description: Match response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: No Credentials
        '422':
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/Unprocessible_Entity'
                - $ref: '#/components/schemas/Invalid_Parameters'
                type: object
          description: Invalid parameters
      security:
      - authorization: []
      summary: Create an estimate for a Match without authorizing
      tags:
      - match estimates
  /api/v2.2/matches/estimate/{id}:
    patch:
      callbacks: {}
      description: This endpoint is for updating an estimate to get an adjusted quote, or authorizing the estimate. Be sure to send the `state` field as `authorized` to authorize this Match. Pass the fields that you desire to update. Omitted fields will be left unchanged. To update an authorized Match, use `PATCH /matches/{id}` endpoint.
      operationId: FraytElixirWeb.API.V2x2.MatchEstimateController.update
      parameters:
      - description: Match ID
        example: 44e216c1-3ebc-4ce0-9a6b-1b94d9c2f25b
        in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEstimateRequest'
        description: Match params
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchResponse'
          description: Match response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: No Credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Not_Found'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/Unprocessible_Entity'
                - $ref: '#/components/schemas/Invalid_Parameters'
                type: object
          description: Invalid parameters
      security:
      - authorization: []
      summary: Update and/or authorize a Match estimate
      tags:
      - match estimates
components:
  schemas:
    Timeframe:
      description: Timeframe for a stop
      example:
        earliest_arrival: '2022-10-01 11:45:10'
        end_time: '2022-10-01 11:45:10'
        latest_arrival: '2022-10-01 11:45:10'
        latest_completion: '2022-10-01 12:00:10'
        start_time: '2022-10-01 11:45:10'
        updated_at: '2022-10-01 11:45:10'
      properties:
        earliest_arrival:
          description: Earliest expected arrival time at the stop
          format: date-time
          type: string
        end_time:
          deprecated: true
          description: 'Deprecated: use latest_arrival instead'
          format: date-time
          type: string
        latest_arrival:
          description: Latest expected arrival time at the stop
          format: date-time
          type: string
        latest_completion:
          description: Latest expected completion time at the stop (latest_arrival + handling)
          format: date-time
          type: string
        start_time:
          deprecated: true
          description: 'Deprecated: use earliest_arrival instead'
          format: date-time
          type: string
        updated_at:
          description: Timestamp of the last update to the timeframe
          format: date-time
          type: string
      title: Timeframe
      type: object
    Invalid_Parameters:
      description: Error response when invalid paramaters are passed
      properties:
        errors:
          items:
            properties:
              detail:
                type: string
              source:
                properties:
                  pointer:
                    type: string
                type: object
              title:
                type: string
            type: object
          type: array
      title: Invalid Parameters
      type: object
    Update_MatchStop:
      description: Body for updating a Match Stop.
      example:
        cargo_location_required: false
        delivery_notes: Leave by the door
        destination_address: 708 Walnut Street 500, Cincinnati, Ohio 45202, US
        destination_photo_required: false
        dropoff_by: '2030-01-01T01:01:00Z'
        has_load_fee: true
        id: c22206a8-00f5-4fde-8395-c24441263f1b
        id_verification_required: true
        id_verified_at: '2025-01-01T00:00:00Z'
        identifier: '1234567890'
        items:
        - barcode: 123barcode456
          barcode_delivery_required: true
          barcode_pickup_required: false
          container_barcode: 123container456
          declared_value: 1500
          description: A Tire
          height: 30.0
          id: c22206a8-00f5-4fde-8395-c24441263f1b
          length: 30.0
          pieces: 4
          stop_id: '123'
          type: item
          volume: 5400
          weight: 25.0
          width: 6.0
        minimum_age: 42
        needs_pallet_jack: false
        po: PO or Job Number for this Match Stop
        recipient:
          email: john@smith.com
          name: John Smith
          notify: false
          phone_number: +1 202-555-0199
        self_recipient: false
        signature_required: false
        tip_price: 1000
      properties:
        cargo_location_required:
          description: Whether a cargo location is required for this stop
          type: boolean
        delivery_notes:
          description: Notes for the driver regarding delivery
          type:
          - string
          - 'null'
        destination_address:
          description: The dropoff point for this Stop
          oneOf:
          - type: string
          - $ref: '#/components/schemas/AddressRequest'
          type: object
        destination_photo_required:
          description: Whether a POD photo is required
          type: boolean
        dropoff_by:
          description: The latest the driver should arrive at this Stop
          format: date-time
          type:
          - string
          - 'null'
        has_load_fee:
          default: true
          description: Set to `true` if the driver will be required to unload the items
          type: boolean
        id:
          description: Unique identifier for Match Stop. Ensure this is present to update an existing stop instead of replacing it.
          type: string
        id_verification_required:
          default: false
          description: Whether ID verification is required
          type: boolean
        id_verified_at:
          description: Time the recipient's ID was verified
          format: date-time
          type:
          - string
          - 'null'
        identifier:
          description: Unique identifier from external system. This will be returned in all responses, including webhooks.
          type:
          - string
          - 'null'
        items:
          description: Items to be delivered at this Stop
          items:
            $ref: '#/components/schemas/UpdateMatchStopItem'
          minItems: 1
          type: array
        minimum_age:
          description: Minimum age required for delivery
          type:
          - integer
          - 'null'
        needs_pallet_jack:
          default: false
          description: Set to `true` if the driver will be required to unload pallets from a box truck with a pallet jack
          type: boolean
        po:
          description: PO or Job Number for this Match Stop
          type:
          - string
          - 'null'
        recipient:
          description: Contact for this stop's recipient
          example:
            email: john@smith.com
            name: John Smith
            notify: false
            phone_number: +1 202-555-0199
          oneOf:
          - $ref: '#/components/schemas/Contact'
          type:
          - object
          - 'null'
        self_recipient:
          default: true
          description: When set to `true`, `recipient_name`, `recipient_phone`, and `recipient_email` will be ignored
          type: boolean
        signature_instructions:
          description: Required for photo signatures. Instructions for the driver to sign
          type:
          - string
          - 'null'
        signature_required:
          description: When set to `true`, Drivers will require requesting the customer's signature at delivery time.
          type:
          - boolean
          - 'null'
        signature_type:
          default: electronic
          description: Type of signature required
          enum:
          - photo
          - electronic
          - electronic_bill_of_lading
          type:
          - string
          - 'null'
        tip_price:
          default: 0
          description: Additional tip for the driver in US cents (¢)
          type: integer
      title: Update MatchStop
      type: object
    Match:
      description: A Match
      example:
        accepted_at: null
        accessorials:
        - description: Driver must be certified by the TSA for this Match
          id: 1e261ee8-71b3-480a-908d-168941ccea05
          key: tsa
          name: TSA Certification
        activated_at: null
        arrived_at: null
        bill_of_lading_photo: null
        bill_of_lading_required: false
        cancel_code: null
        cancel_reason: null
        canceled_at: null
        completed_at: null
        contract:
          allowed_cancellation_states:
          - inactive
          - scheduled
          - assigning_driver
          company_id: null
          contract_key: frayt_dash
          id: 346519d2-db50-44ca-b2f7-d50771efc03f
          name: Dash
        coupon: null
        defaults:
          match_stop_items:
            barcode_delivery_required: false
            barcode_pickup_required: false
            type: item
          match_stops:
            cargo_location_required: false
            destination_photo_required: true
            has_load_fee: true
            id_verification_required: false
            needs_pallet_jack: false
            self_recipient: true
            signature_required: true
            signature_type: electronic
          match_stops.recipient:
            notify: false
          matches:
            origin_photo_required: false
            parking_spot_required: false
          matches.sender:
            notify: false
        driver: null
        dropoff_at: '2030-02-01T00:30:00Z'
        eta: null
        fees:
        - amount: 14000
          description: TSA Service Fee
          id: 1e261ee8-71b3-480a-908d-168941ccea05
          name: TSA Certification
          original_amount: 0
          type: tsa_wait_fee
        - amount: 4894
          description: null
          id: 1e261ee8-71b3-480a-908d-168941ccea05
          name: Base Fee
          original_amount: 0
          type: base_fee
        - amount: 1000
          description: null
          id: 1e261ee8-71b3-480a-908d-168941ccea05
          name: Driver Tip
          original_amount: 0
          type: driver_tip
        id: 0000c119-fca6-4531-8b7f-716efb54ef26
        identifier: '1234567890'
        inserted_at: '2030-01-01T00:19:50Z'
        label:
          format: qr_code
          value: 1Z2Y3X4W5V6U7
        optimized_stops: false
        origin_address:
          address: 708 Walnut Street
          address2: '500'
          city: Cincinnati
          country: United States
          country_code: US
          formatted_address: 708 Walnut Street 500, Cincinnati, Ohio 45202, US
          lat: 39.1043198
          lng: -84.5118912
          name: null
          neighborhood: Central Business District
          state: Ohio
          state_code: OH
          type: address
          zip: '45202'
        origin_photo: null
        origin_photo_required: false
        origin_photos: []
        picked_up_at: null
        pickup_at: '2030-02-01T00:00:00Z'
        pickup_notes: Go to the back
        platform: marketplace
        po: ABCDEFG
        preferred_driver: null
        price_discount: 0.0
        rating: null
        rating_reason: null
        required_fields: {}
        route_id: 0000c119-fca6-4531-8b7f-716efb54ef26
        route_identifier: Huntsville - North East, AL
        route_index: 0
        schedule_id: null
        scheduled: true
        self_sender: false
        sender:
          email: john@smith.com
          id: 23e534a0-b239-41d9-aa00-3adb40197388
          name: John Smith
          notify: false
          phone_number: +1 202-555-0199
        service_level: 1
        shortcode: ABCDEFGH
        signature_photo: null
        slas:
        - completed_at: null
          end_time: '2030-02-01T00:30:00Z'
          start_time: '2030-02-01T00:00:00Z'
          type: pickup
        - completed_at: null
          end_time: '2030-02-01T01:30:00Z'
          start_time: '2030-02-01T00:00:00Z'
          type: delivery
        state: scheduled
        state_transition:
          from: pending
          match_id: 123e4567-e89b-12d3-a456-426614174000
          notes: null
          stop_id: null
          to: scheduled
          updated_at: '2030-01-01 09:30:00'
        stops:
        - arrived_at: null
          cargo_location: null
          cargo_location_required: false
          delivered_at: null
          delivery_notes: Leave by the door
          destination_address:
            address: 708 Walnut Street
            address2: '500'
            city: Cincinnati
            country: United States
            country_code: US
            formatted_address: 708 Walnut Street 500, Cincinnati, Ohio 45202, US
            lat: 39.1043198
            lng: -84.5118912
            name: null
            neighborhood: Central Business District
            state: Ohio
            state_code: OH
            type: address
            zip: '45202'
          destination_photo: null
          destination_photo_required: false
          destination_photos: []
          driver_tip: 10.0
          dropoff_by: '2030-01-01T01:01:00Z'
          electronic_bill_of_lading_photo: null
          eta: null
          has_load_fee: true
          id: c22206a8-00f5-4fde-8395-c24441263f1b
          id_birthdate: null
          id_verification_required: true
          id_verified_at: null
          identifier: '1234567890'
          index: 0
          items:
          - barcode: 123barcode456
            barcode_delivery_required: true
            barcode_pickup_required: false
            barcode_readings: []
            container_barcode: 123container456
            declared_value: 1500
            description: A Tire
            height: 30.0
            id: 03e534a0-b239-41d9-aa00-3adb40197388
            length: 30.0
            pieces: 4
            stop_id: '123'
            type: item
            volume: 5400
            weight: 25.0
            width: 6.0
          minimum_age: 42
          needs_pallet_jack: false
          po: PO or Job Number for this Match Stop
          recipient:
            email: john@smith.com
            id: 13e534a0-b239-41d9-aa00-3adb40197388
            name: John Smith
            notify: false
            phone_number: +1 202-555-0199
          route_index: 1
          self_recipient: false
          signature_instructions: null
          signature_name: null
          signature_photo: null
          signature_required: false
          signature_type: electronic
          state: pending
          state_transition: null
          timeframe:
            estimated: null
            planned:
              earliest_arrival: '2022-10-01 11:45:10'
              end_time: '2022-10-01 11:45:10'
              latest_arrival: '2022-10-01 11:45:10'
              latest_completion: '2022-10-01 12:00:10'
              start_time: '2022-10-01 11:45:10'
              updated_at: '2022-10-01 11:45:10'
            scheduled:
              earliest_arrival: '2022-10-01 11:45:10'
              end_time: '2022-10-01 11:45:10'
              latest_arrival: '2022-10-01 11:45:10'
              latest_completion: '2022-10-01 12:00:10'
              start_time: '2022-10-01 11:45:10'
              updated_at: '2022-10-01 11:45:10'
          tracking_url: https://example.com/track/1234567890
          travel_duration: 153
          undeliverable_at: null
          undeliverable_code: null
        timeframe:
          estimated: null
          planned:
            earliest_arrival: '2022-10-01 11:45:10'
            end_time: '2022-10-01 11:45:10'
            latest_arrival: '2022-10-01 11:45:10'
            latest_completion: '2022-10-01 12:00:10'
            start_time: '2022-10-01 11:45:10'
            updated_at: '2022-10-01 11:45:10'
          scheduled:
            earliest_arrival: '2022-10-01 11:45:10'
            end_time: '2022-10-01 11:45:10'
            latest_arrival: '2022-10-01 11:45:10'
            latest_completion: '2022-10-01 12:00:10'
            start_time: '2022-10-01 11:45:10'
            updated_at: '2022-10-01 11:45:10'
        timezone: America/New_York
        total_distance: 1.7
        total_price: 198.94
        total_volume: 21600
        total_weight: 100
        unload_method: null
        vehicle_class: 2
      properties:
        accepted_at:
          description: The date & time this Match was accepted by the assigned driver
          format: date-time
          type: string
        accessorials:
          description: Required accessorials for this Match
          items:
            $ref: '#/components/schemas/Accessorial'
          type: array
        activated_at:
          description: The date & time this Match was made available to drivers
          format: date-time
          type: string
        arrived_at:
          description: The date & time the driver arrived at the pickup location
          format: date-time
          type: string
        bill_of_lading_photo:
          description: URL linking to a photo of the Bill of Lading
          format: uri
          type: string
        bill_of_lading_required:
          description: Whether this Match requires a bill of lading
          type: boolean
        cancel_code:
          description: Reason code for cancellation if a Match has been canceled
          type:
          - string
          - 'null'
        cancel_reason:
          description: Reason for cancellation if a Match has been canceled
          type:
          - string
          - 'null'
        canceled_at:
          description: The date & time this Match was canceled
          format: date-time
          type: string
        completed_at:
          description: The date & time the last stop on this Match was delivered
          format: date-time
          type: string
        contract:
          description: If you have customized agreed-upon pricing with FRAYT, you will need to setup a corresponding contract identifier provided to you by the FRAYT team. Pricing defaults to our standard rates with the identifier in place.
          type:
          - string
          - 'null'
        coupon:
          properties:
            code:
              description: Coupon code used
              type: string
            percentage:
              description: Discount percent (%) from coupon
              type: integer
          type:
          - object
          - 'null'
        defaults:
          description: Default values for this Match, if they were not provided in the initial creation request
          properties:
            match_stop_items:
              description: An object containing default values for this schema}
              type: object
            match_stops:
              description: An object containing default values for this schema}
              type: object
            match_stops.recipient:
              description: An object containing default values for this schema}
              type: object
            matches:
              description: An object containing default values for this schema}
              type: object
            matches.sender:
              description: An object containing default values for this schema}
              type: object
          type:
          - object
          - 'null'
        driver:
          description: The driver assigned to this Match
          oneOf:
          - $ref: '#/components/schemas/Driver'
          type: object
        dropoff_at:
          description: Scheduled date & time the final stop is to be delivered by
          format: date-time
          type:
          - string
          - 'null'
        id:
          description: Unique identifier for match
          type: string
        identifier:
          description: Unique identifier from external system. This will be returned in all responses, including webhooks.
          type:
          - string
          - 'null'
        inserted_at:
          description: The date & time this Match was created
          format: date-time
          type: string
        label:
          description: Label for this Match
          oneOf:
          - $ref: '#/components/schemas/Label'
          type:
          - object
          - 'null'
        origin_address:
          description: The pickup point for this Match
          oneOf:
          - $ref: '#/components/schemas/Address'
          type: object
        origin_photo:
          description: DEPRECATED - URL linking to a photo showing the items picked up, will be fully replaced by `origin_photos`
          format: uri
          type: string
        origin_photo_required:
          description: Whether this Match requires a photo of the origin address
          type: boolean
        origin_photos:
          description: List of URLs linking to photos showing the items picked up
          type: array
        parking_spot_required:
          description: Whether the driver should provide their parking spot ID
          type: boolean
        picked_up_at:
          description: The date & time this Match was picked up by the driver
          format: date-time
          type: string
        pickup_at:
          description: Scheduled pick up date & time
          format: date-time
          type:
          - string
          - 'null'
        pickup_notes:
          description: Instructions for Driver when picking up
          type:
          - string
          - 'null'
        platform:
          default: marketplace
          description: Whether this is a Marketplace or Deliver Pro match
          type:
          - string
          - 'null'
        po:
          description: PO or Job Number for this Match
          type:
          - string
          - 'null'
        preferred_driver:
          description: Designated preferred driver for this Match
          type:
          - string
          - 'null'
        rating:
          description: Rating provided by the Shipper for the driver's performance on this Match
          type:
          - integer
          - 'null'
        required_fields:
          description: Required fields for this Match
          properties:
            match_stop_items:
              additionalProperties:
                type: boolean
              description: An object containing required values for this schema
              type: object
            match_stops:
              additionalProperties:
                type: boolean
              description: An object containing required values for this schema
              type: object
            match_stops.recipient:
              additionalProperties:
                type: boolean
              description: An object containing required values for this schema
              type: object
            matches:
              additionalProperties:
                type: boolean
              description: An object containing required values for this schema
              type: object
            matches.sender:
              additionalProperties:
                type: boolean
              description: An object containing required values for this schema
              type: object
          type:
          - object
          - 'null'
        route_id:
          description: Unique identifier for route
          type: string
        route_identifier:
          description: If this is a recurring route please provide your identifier to this field.
          type:
          - string
          - 'null'
        route_index:
          description: Index of this Match in the route
          type: integer
        schedule_id:
          description: Unique identifier for the schedule this recurring Match belongs to
          type:
          - string
          - 'null'
        scheduled:
          description: If this Match is scheduled
          type: boolean
        self_sender:
          default: true
          description: When set to `true`, `sender` will be ignored
          type: boolean
        sender:
          description: The senders contact information, if different than the shippers
          oneOf:
          - $ref: '#/components/schemas/Contact'
          type:
          - object
          - 'null'
        service_level:
          description: Set `1` for dash or `2` for same day
          enum:
          - 1
          - 2
          type: integer
        shipper_email:
          description: 'Email of shipper this Match should be created under. If omitted, the system will:

            1. Use your company''s configured default shipper (if set and approved)

            2. Fall back to the first approved shipper from your company''s locations (if no default shipper configured)

            3. Return an error if the default shipper is configured but not approved, or if no approved shippers are available

            '
          type:
          - string
          - 'null'
        shortcode:
          description: Shortcode identifier for this Match
          type: string
        signature_photo:
          description: URL linking to a photo of the requested signature type
          format: uri
          type: string
        slas:
          description: List of the pickup and delivery SLAs for this Match
          items:
            $ref: '#/components/schemas/SLA'
          type: array
        state:
          description: 'Current Match state<br/>

            <br/>A successful Match will transition through some or all of these states:<br/>

            Pending –> Inactive –> Scheduled –> Assigning Driver –> Offered –> Offer Not Accepted –> Accepted –> En Route To Pickup –> Arrived At Pickup –> Picked Up –> En Route To Return –> Arrived At Return –> Completed –> Charged

            <hr/>

            Unable To Pickup <i>the driver was unabl

# --- truncated at 32 KB (99 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frayt/refs/heads/main/openapi/frayt-match-estimates-api-openapi.yml