FRAYT · Schema
MatchResponse
Response schema showing all stops
CompanyLast Mile DeliveryLogisticsCouriersOn-Demand DeliveryShippingFreightSupply ChainTransportationThird Party LogisticsDelivery TrackingWebhook
Properties
| Name | Type | Description |
|---|---|---|
| response | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/frayt/main/json-schema/frayt-match-response-schema.json",
"title": "MatchResponse",
"description": "Response schema showing all stops",
"x-generated": "2026-10-20",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/frayt-match-estimates-api-openapi.yml#/components/schemas/MatchResponse",
"properties": {
"response": {
"$ref": "#/$defs/Match"
}
},
"type": "object",
"$defs": {
"Accessorial": {
"description": "An add-on service for a shipment",
"properties": {
"key": {
"description": "Unique key for Accessorial",
"type": "string"
}
},
"title": "Accessorial",
"type": "object"
},
"Address": {
"description": "A Goecoded address",
"properties": {
"address": {
"description": "Address line 1",
"type": "string"
},
"address2": {
"description": "Address line 2",
"type": "string"
},
"city": {
"description": "City",
"type": "string"
},
"country_code": {
"description": "Country",
"type": "string"
},
"formatted_address": {
"description": "Combined address components in a human readable string",
"type": "string"
},
"lat": {
"description": "Latitude point of address",
"format": "float",
"type": "number"
},
"lng": {
"description": "Longitude point of address",
"format": "float",
"type": "number"
},
"name": {
"description": "The name of this address. This could be a store name, a park, or any other name",
"type": "string"
},
"neighborhood": {
"description": "The general neighborhood the address is located in",
"type": "string"
},
"state": {
"description": "Full state name",
"type": "string"
},
"state_code": {
"description": "State code (e.g. OH)",
"type": "string"
},
"zip": {
"description": "Zipcode",
"type": "string"
}
},
"title": "Address",
"type": "object"
},
"Barcode_Reading": {
"description": "",
"properties": {
"barcode": {
"description": "Barcode for Match Stop Item",
"type": "string"
},
"inserted_at": {
"description": "The date & time this reading was created",
"format": "date-time",
"type": "string"
},
"photo": {
"description": "Item photo. A photo should be taken when a barcode can't be read",
"type": "string"
},
"state": {
"description": "State of reading it could be captured, missing or verified",
"enum": [
"captured",
"missing",
"verified"
],
"type": "string"
},
"type": {
"description": "Reading type it could be pickup or delivery",
"enum": [
"pickup",
"delivery"
],
"type": "string"
}
},
"title": "Barcode Reading",
"type": "object"
},
"Contact": {
"description": "A contact",
"properties": {
"email": {
"description": "Contact's email address",
"format": "email",
"type": [
"string",
"null"
]
},
"name": {
"description": "Contact's first name and last name",
"type": "string"
},
"notify": {
"description": "Set to `false` if the contact should not receive SMS and email notifications regarding the status of this shipment",
"type": "boolean"
},
"phone_number": {
"description": "Contact's phone number in the general international format for telephone numbers (E.164)",
"type": [
"string",
"null"
]
}
},
"required": [
"name"
],
"title": "Contact",
"type": "object"
},
"Driver": {
"description": "A Driver",
"properties": {
"current_location": {
"properties": {
"created_at": {
"description": "Date & time of last driver location update",
"format": "date-time",
"type": "string"
},
"id": {
"description": "Unique identifier for driver's location",
"type": "string"
},
"lat": {
"description": "Latitude point of driver's location",
"format": "float",
"type": "number"
},
"lng": {
"description": "Longitude point of driver's location",
"format": "float",
"type": "number"
}
},
"type": "object"
},
"email": {
"description": "Email associated with driver",
"format": "email",
"type": "string"
},
"first_name": {
"type": "string"
},
"id": {
"description": "Unique identifier for driver",
"type": "string"
},
"last_name": {
"type": "string"
},
"phone_number": {
"description": "Driver's phone number",
"type": "string"
},
"vehicle_make": {
"description": "Make of the driver's vehicle",
"type": "string"
},
"vehicle_model": {
"description": "Model of the driver's vehicle",
"type": "string"
},
"vehicle_year": {
"description": "Manufacturing year of the driver's vehicle",
"type": "string"
}
},
"title": "Driver",
"type": "object"
},
"Label": {
"description": "A label containing a format and a value used for generating a barcode or QR code.",
"properties": {
"format": {
"description": "The format of the label",
"enum": [
"code_128",
"qr_code",
"code_39"
],
"type": "string"
},
"value": {
"description": "The value of the label",
"type": "string"
}
},
"title": "Label",
"type": "object"
},
"Match": {
"description": "A Match",
"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": "#/$defs/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": "#/$defs/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": "#/$defs/Label"
}
],
"type": [
"object",
"null"
]
},
"origin_address": {
"description": "The pickup point for this Match",
"oneOf": [
{
"$ref": "#/$defs/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": "#/$defs/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:\n1. Use your company's configured default shipper (if set and approved)\n2. Fall back to the first approved shipper from your company's locations (if no default shipper configured)\n3. Return an error if the default shipper is configured but not approved, or if no approved shippers are available\n",
"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": "#/$defs/SLA"
},
"type": "array"
},
"state": {
"description": "Current Match state<br/>\n<br/>A successful Match will transition through some or all of these states:<br/>\nPending –> 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\n<hr/>\nUnable To Pickup <i>the driver was unable to pick up all items.</i><br/>Driver Canceled <i>the driver has removed himself from a Match. The Match itself is not canceled and will be sent out to other available drivers.</i><br/>Admin Canceled <i>has been canceled by the FRAYT team</i><br/>Shipper Canceled <i>was canceled by the shipper</i><br/>Pending <i>has been estimated, but not authorized</i><br/>Inactive <i>is awaiting action from the FRAYT team before it can be sent out to drivers</i><br/>Scheduled <i>is currently scheduled for a future time, and has not been sent to drivers</i><br/>Assigning Driver <i>we are in the process of finding an available driver to assign to this Match</i><br/>Offered <i>has been offered to a driver, but has not been accepted</i><br/>Offer Not Accepted <i>the driver offered this match did not accept.</i><br/>Accepted <i>has been accepted by a driver, but is not yet on the way</i><br/>En Route To Pickup <i>the driver is on the way to the pickup location</i><br/>Arrived At Pickup <i>the driver has arrived at the pickup location</i><br/>Picked Up <i>the driver has picked up all items. Details updates on individual stops can be found under the stops state.</i><br/>En Route To Return <i>the driver is returning back to the pick up point.</i><br/>Arrived At Return <i>the driver has reached the pickup point.</i><br/>Completed <i>all stops have been completed, but not yet charged</i><br/>Charged <i>the Match has been completed and charged</i>\n",
"enum": [
"accepted",
"admin_canceled",
"arrived_at_pickup",
"arrived_at_return",
"assigning_driver",
"canceled",
"charged",
"completed",
"driver_canceled",
"en_route_to_pickup",
"en_route_to_return",
"inactive",
"offer_not_accepted",
"offered",
"pending",
"picked_up",
"scheduled",
"unable_to_pickup"
],
"type": "string"
},
"state_transition": {
"oneOf": [
{
"$ref": "#/$defs/StateTransition"
}
],
"type": "object"
},
"stops": {
"description": "Stops along this Match's route",
"items": {
"$ref": "#/$defs/MatchStop"
},
"type": "array"
},
"timeframe": {
"description": "Timeframes for this Match",
"oneOf": [
{
"$ref": "#/$defs/Stop_Timeframe"
}
],
"type": "object"
},
"total_distance": {
"description": "Total distance from origin to all stops",
"format": "float",
"type": "number"
},
"total_price": {
"description": "Total price shipper will be charged in US dollars ($). If a cancellation fee is included, it will be shown here on cancellation.",
"format": "double",
"type": "number"
},
"total_volume": {
"description": "Sum of volume of all items on all stops in cubic inches (in³)",
"type": "integer"
},
"total_weight": {
"description": "Sum of weight of all items on all stops in pounds (lbs)",
"type": "integer"
},
"unload_method": {
"description": "Service type for box trucks. This is required when the vehicle class is box truck",
"enum": [
"dock_to_dock",
"lift_gate"
],
"type": [
"string",
"null"
]
},
"vehicle_class": {
"description": "You can especify the vehicle class and type for this match. It can be either a number or a string (see the documentation below) <br/>\n <br/> List of available vehicle classes and types:\n <ul>\n <li> car </li>\n <li> midsize </li>\n <li> cargo_van </li>\n <ul>\n <li> transit </li>\n <li> standard </li>\n <li> sprinter </li>\n </ul>\n <li> pickup_truck </li>\n <ul>\n <li> 4ft </li>\n <li> 5ft </li>\n <li> 6ft </li>\n <li> 8ft </li>\n </ul>\n <li> box_truck </li>\n </ul>\n <br/> NOTE: This can be left empty only if auto selection is enabled on your account. Reach out to the FRAYT team for more details",
"oneOf": [
{
"description": "<br/> A combination of vehicle type key and vehicle class key can be used to select a specific vehicle type. <br/>\n <br/> For example, to select a sprinter van, the value would be `cargo_van.sprinter` You can also specify only the type, in which case the smallest vehicle class for that type will be selected.<br/>\n ",
"type": "string"
},
{
"description": "Set `1` for car, `2` for midsize, `3` for cargo van, and `4` for box truck, and `5` for pickup truck.",
"type": "integer"
}
]
}
},
"title": "Match",
"type": "object"
},
"MatchStop": {
"description": "A Stop on a Match",
"properties": {
"arrived_at": {
"description": "Time the driver arrived at the Stop",
"format": "date-time",
"type": "string"
},
"cargo_location": {
"description": "Location where the cargo was left",
"enum": [
"left_at_front_door",
"left_at_mailroom_concierge",
"left_at_side_rear_door",
"left_with_neighbour",
"left_behind_gate_fence",
"left_at_lobby_entry_way",
"handed_to_customer"
],
"type": "string"
},
"cargo_location_required": {
"description": "Whether a cargo location is required for this stop",
"type": "boolean"
},
"delivered_at": {
"description": "Time the Stop was delivered",
"format": "date-time",
"type": "string"
},
"delivery_notes": {
"description": "Notes for the driver regarding delivery",
"type": [
"string",
"null"
]
},
"destination_address": {
"description": "The dropoff point for this Stop",
"oneOf": [
{
"$ref": "#/$defs/Address"
}
],
"type": "object"
},
"destination_photo": {
"description": "DEPRECATED - URL linking to POD photo, will be fully replaced by `destinaton_photos`",
"format": "uri",
"type": "string"
},
"destination_photo_required": {
"description": "Whether a POD photo is required",
"type": "boolean"
},
"destination_photos": {
"description": "List of URLs linking to POD photos",
"type": "array"
},
"driver_tip": {
"description": "Additional tip for the driver in US dollars ($)",
"format": "double",
"type": "number"
},
"dropoff_by": {
"description": "The latest the driver should arrive at this Stop",
"format": "date-time",
"type": [
"string",
"null"
]
},
"electronic_bill_of_lading_photo": {
"description": "URL linking to EBoL photo",
"format": "uri",
"type": "string"
},
"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",
"type": "string"
},
"id_verification_required": {
"description": "Whether ID verification is required",
"type": "boolean"
},
"id_verified_at": {
"description": "Time the id was verified",
"format": "date-time",
"type": "string"
},
"identifier": {
"description": "Unique identifier from external system. This will be returned in all responses, including webhooks.",
"type": [
"string",
"null"
]
},
"index": {
"description": "DEPRECATED (look at route_index, instead) - The order that each Stop will be delivered in.",
"type": "integer"
},
"items": {
"description": "Items to be delivered at this Stop",
"items": {
"$ref": "#/$defs/MatchStopItem"
},
"minItems": 1,
"type": "array"
},
"minimum_age": {
"description": "Minimum age required for delivery",
"type": "integer"
},
"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",
"oneOf": [
{
"$ref": "#/$defs/Contact"
}
],
"type": [
"object",
"null"
]
},
"route_index": {
"description": "The order that each Stop will be delivered in.",
"type": "integer"
},
"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_name": {
"description": "Name entered by the signee when accepting the delivery",
"type": "string"
},
"signature_photo": {
"description": "URL linking to photo of signees signature",
"format": "uri",
"type": "string"
},
"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"
]
},
"state": {
"description": "Current Stop state.<br/>\n<br/>A successful Match Stop will transition through some or all of these states:<br/>\nPending –> En Route –> Arrived –> Signed –> Delivered –> Returned\n<hr/>\nRe Routed <i>this is a dummy stop for recordkeeping purposes. The original stop has been modified.</i><br/>Unserved <i>this stop was unable to be served in a Match. This state is only possible for Batches. A reason will be provided.</i><br/>Undeliverable <i>the driver was unable to deliver this stop. A reason will be provided.</i><br/>Pending <i>the driver is not yet en route. This is the starting state.</i><br/>En Route <i>the driver is en route to the stop</i><br/>Arrived <i>the driver has arrived at the stop</i><br/>Signed <i>the recipient has signed for the delivery of the items</i><br/>Delivered <i>the driver has completed the delivery of all items</i><br/>Returned <i>the driver has returned the package.</i>\n",
"enum": [
"arrived",
"delivered",
"en_route",
"pending",
"re_routed",
"returned",
"signed",
"undeliverable",
"unserved"
],
"type": "string"
},
"state_transition": {
"oneOf": [
{
"$ref": "#/$defs/StateTransition"
}
],
"type": "object"
},
"timeframe": {
"description": "Timeframes for this Stop",
"oneOf": [
{
"$ref": "#/$defs/Stop_Timeframe"
}
],
"type": "object"
},
"tracking_url": {
"description": "URL to track the delivery",
"format": "uri",
"type": "string"
},
"travel_duration": {
"description": "Travel Duration to this Stop",
"type": "integer"
},
"undeliverable_at": {
"description": "Time the Stop was marked as unable to be delivered",
"format": "date-time",
"type": [
"string",
"null"
]
},
"undeliverable_code": {
"description": "Reason a Stop was marked as unable to be delivered",
"enum": [
"unable_to_locate_address",
"incorrect_address",
"recipient_refused_delivery",
"unable_to_access_location",
"unable_to_verify_id",
"business_closed",
"missing_item",
"damaged_item",
"out_of_time_returned"
],
"type": [
"string",
"null"
]
}
},
"required": [
"items",
"destination_address"
],
"title": "MatchStop",
"type": "object"
},
"MatchStopItem": {
"description": "An Item to be delivered to a stop",
"properties": {
"barcode": {
"description": "Value of barcode to be scanned for this item",
"type": [
"string",
"null"
]
},
"barcode_delivery_required": {
"description": "Barcode reading is required for this item on delivery",
"type": "boolean"
},
"barcode_pickup_required": {
"description": "Barcode reading is required for this item on pickup",
"type": "boolean"
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frayt/refs/heads/main/json-schema/frayt-match-response-schema.json
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/frayt-match-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.