Grubhub · Schema

QuoteRequest

A request for delivery fulfillment quotes.

Food DeliveryRestaurantMarketplaceOnline OrderingPoint-of-SaleLogisticsLast Mile DeliveryMenu ManagementHospitalityLocal CommerceDelivery

Properties

Name Type Description
pickup object
dropoff object
items array A collection of items describing what is included in the delivery.
charges object
time_preferences object
dropoff_preferences object
client_data object
notification_preferences object
pickup_verification object
delivery_sizing object
tags array Tags that can be applied to a delivery to assist with categorization, pricing and filtering.
View JSON Schema on GitHub

JSON Schema

grubhub-quoterequest-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/grubhub/main/json-schema/grubhub-quoterequest-schema.json",
  "title": "QuoteRequest",
  "x-generated": "2026-09-17",
  "x-method": "derived",
  "x-source": "openapi/grubhub-connect-endpoints-openapi.yml#/components/schemas/QuoteRequest",
  "required": [
    "charges",
    "dropoff",
    "pickup",
    "time_preferences"
  ],
  "type": "object",
  "properties": {
    "pickup": {
      "$ref": "#/$defs/PickupLocation"
    },
    "dropoff": {
      "$ref": "#/$defs/DropoffLocation"
    },
    "items": {
      "type": "array",
      "description": "A collection of items describing what is included in the delivery.",
      "items": {
        "$ref": "#/$defs/Item"
      }
    },
    "charges": {
      "$ref": "#/$defs/Charges"
    },
    "time_preferences": {
      "$ref": "#/$defs/TimePreferences"
    },
    "dropoff_preferences": {
      "$ref": "#/$defs/DropoffPreferences"
    },
    "client_data": {
      "$ref": "#/$defs/ClientData"
    },
    "notification_preferences": {
      "$ref": "#/$defs/NotificationPreferences"
    },
    "pickup_verification": {
      "$ref": "#/$defs/com.grubhub.pos.generic.delivery.fulfillment.common.model.PickupVerification"
    },
    "delivery_sizing": {
      "$ref": "#/$defs/DeliverySizing"
    },
    "tags": {
      "uniqueItems": true,
      "type": "array",
      "description": "Tags that can be applied to a delivery to assist with categorization, pricing and filtering.",
      "items": {
        "type": "string",
        "description": "Tags that can be applied to a delivery to assist with categorization, pricing and filtering.",
        "example": "FOOD",
        "enum": [
          "FOOD",
          "FLORAL",
          "GROCERY"
        ]
      }
    }
  },
  "description": "A request for delivery fulfillment quotes.",
  "$defs": {
    "Charges": {
      "required": [
        "contents_value",
        "tip"
      ],
      "type": "object",
      "properties": {
        "tip": {
          "minimum": 0,
          "type": "integer",
          "description": "The tip amount the courier receives, formatted as cents.",
          "format": "int32",
          "example": 200
        },
        "contents_value": {
          "minimum": 0,
          "type": "integer",
          "description": "The amount the items being delivered are worth minus taxes, formatted as cents.",
          "format": "int32",
          "example": 200
        }
      },
      "description": "The charges associated with a delivery."
    },
    "ClientData": {
      "type": "object",
      "properties": {
        "external_id": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "A stored correlation id that isn't used by Grubhub's platform.",
          "example": "ABC123"
        },
        "external_merchant_id": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "A client-provided merchant identifier.",
          "example": "MERCHANT_123"
        },
        "external_source": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The external source API from which the delivery came from.",
          "example": "RELAY_123"
        },
        "reference_number": {
          "type": "string",
          "description": "An external delivery identifier that is used by Grubhub's platform for display purposes.",
          "example": "123XYZ4567ABC890"
        }
      },
      "description": "Client metadata associated with a delivery."
    },
    "DeliveryAddress": {
      "required": [
        "city",
        "country_area",
        "country_code",
        "postal_code",
        "street_address"
      ],
      "type": "object",
      "properties": {
        "country_code": {
          "maxLength": 8,
          "minLength": 0,
          "type": "string",
          "description": "The ISO-3166 country code of the address.",
          "example": "US"
        },
        "country_area": {
          "maxLength": 64,
          "minLength": 0,
          "type": "string",
          "description": "The country area or state of the address.",
          "example": "IL"
        },
        "city": {
          "maxLength": 64,
          "minLength": 0,
          "type": "string",
          "description": "The city of the address.",
          "example": "Chicago"
        },
        "street_address": {
          "maxItems": 5,
          "minItems": 1,
          "type": "array",
          "description": "The street address details of the address.",
          "example": [
            "123 Washington Lane"
          ],
          "items": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string"
          }
        },
        "postal_code": {
          "maxLength": 16,
          "minLength": 0,
          "type": "string",
          "description": "The postal code of the address.",
          "example": "60642"
        },
        "company_name": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The company name of the address.",
          "example": "Fake Savings and Loans Co."
        }
      },
      "description": "The information associated with an address."
    },
    "DeliverySizing": {
      "type": "object",
      "properties": {
        "weight": {
          "type": "string",
          "description": "The weight category of a delivery.\n\n**STANDARD** <= 15 lbs\n\n**HEAVY** > 15 lbs",
          "example": "STANDARD",
          "enum": [
            "STANDARD",
            "HEAVY"
          ]
        },
        "dimensions": {
          "type": "string",
          "description": "The size category of a delivery based on its dimensions.\n\n**SMALL** - single item, may be carried in one hand\n\n**MEDIUM** - requires a bag, may be carried in one hand\n\n**LARGE** - may require two hands\n\n**EXTRA_LARGE** - may require multiple trips or equipment",
          "example": "MEDIUM",
          "enum": [
            "SMALL",
            "MEDIUM",
            "LARGE",
            "EXTRA_LARGE"
          ]
        }
      },
      "description": "Information about delivery-level sizing."
    },
    "DropoffLocation": {
      "required": [
        "address",
        "name",
        "phone"
      ],
      "type": "object",
      "properties": {
        "name": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The name of the merchant or individual at the location.",
          "example": "Bob's Burgers"
        },
        "address": {
          "$ref": "#/$defs/DeliveryAddress"
        },
        "phone": {
          "pattern": "^\\+\\d{11}$",
          "type": "string",
          "description": "A E.164 formatted phone number. Only 11-digits are supported.",
          "example": "+16145552332"
        },
        "instructions": {
          "maxLength": 500,
          "minLength": 0,
          "type": "string",
          "description": "Instructions for the courier while at the location.",
          "example": "Leave at front door."
        },
        "geo_location": {
          "$ref": "#/$defs/GeoLocation"
        }
      },
      "description": "The information associated with a dropoff location."
    },
    "DropoffPreferences": {
      "type": "object",
      "properties": {
        "handoff_options": {
          "maxItems": 1,
          "uniqueItems": true,
          "type": "array",
          "description": "Options indicating how dropoff should be performed.",
          "items": {
            "type": "string",
            "enum": [
              "CONTACTLESS"
            ]
          }
        }
      },
      "description": "Preferences for how the delivery dropoff should be handled."
    },
    "GeoLocation": {
      "required": [
        "lat",
        "lng"
      ],
      "type": "object",
      "properties": {
        "lat": {
          "type": "number",
          "description": "The latitude of the location.",
          "format": "double",
          "example": 41.88320791307697
        },
        "lng": {
          "type": "number",
          "description": "The longitude of the location.",
          "format": "double",
          "example": -87.63142796027925
        }
      },
      "description": "The last known location of the courier."
    },
    "Item": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "maxLength": 256,
          "minLength": 0,
          "type": "string",
          "description": "The name of the item being delivered.",
          "example": "Cheeseburger"
        },
        "description": {
          "maxLength": 256,
          "minLength": 0,
          "type": "string",
          "description": "The description of the item.",
          "example": "Burger patty topped with cheese."
        },
        "quantity": {
          "minimum": 1,
          "type": "integer",
          "description": "The quantity of the item.",
          "format": "int32"
        },
        "sub_items": {
          "type": "array",
          "description": "Subitems included with the item.",
          "items": {
            "$ref": "#/$defs/SubItem"
          }
        },
        "item_sizing": {
          "$ref": "#/$defs/ItemSizing"
        }
      },
      "description": "The information associated with a delivery item."
    },
    "ItemDimensions": {
      "required": [
        "depth",
        "height",
        "unit",
        "width"
      ],
      "type": "object",
      "properties": {
        "unit": {
          "type": "string",
          "description": "Unit of measurement",
          "example": "INCHES",
          "enum": [
            "INCHES",
            "FEET"
          ]
        },
        "width": {
          "type": "number",
          "description": "Width of the item",
          "format": "double",
          "example": 10.0
        },
        "height": {
          "type": "number",
          "description": "Height of the item",
          "format": "double",
          "example": 5.0
        },
        "depth": {
          "type": "number",
          "description": "Depth of the item",
          "format": "double",
          "example": 3.0
        }
      },
      "description": "Dimensions of the item"
    },
    "ItemSizing": {
      "type": "object",
      "properties": {
        "weight": {
          "$ref": "#/$defs/ItemWeight"
        },
        "dimensions": {
          "$ref": "#/$defs/ItemDimensions"
        }
      },
      "description": "Information about item-level sizing"
    },
    "ItemWeight": {
      "required": [
        "unit",
        "weight"
      ],
      "type": "object",
      "properties": {
        "unit": {
          "type": "string",
          "description": "Unit of measurement",
          "example": "POUNDS",
          "enum": [
            "POUNDS"
          ]
        },
        "weight": {
          "type": "number",
          "description": "Weight of the item",
          "format": "double",
          "example": 5.0
        }
      },
      "description": "Weight of the item"
    },
    "NotificationPreferences": {
      "type": "object",
      "properties": {
        "send_dropoff_contact_notifications": {
          "type": "boolean",
          "description": "Whether to send notifications to the dropoff contact for this delivery - defaults to sending notifications.",
          "default": true
        }
      },
      "description": "Notification-related preferences for the delivery request"
    },
    "PickupLocation": {
      "required": [
        "address",
        "brand_name",
        "name",
        "phone"
      ],
      "type": "object",
      "properties": {
        "name": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The name of the merchant or individual at the location.",
          "example": "Bob's Burgers"
        },
        "address": {
          "$ref": "#/$defs/DeliveryAddress"
        },
        "phone": {
          "pattern": "^\\+\\d{11}$",
          "type": "string",
          "description": "A E.164 formatted phone number. Only 11-digits are supported.",
          "example": "+16145552332"
        },
        "instructions": {
          "maxLength": 500,
          "minLength": 0,
          "type": "string",
          "description": "Instructions for the courier while at the location.",
          "example": "Leave at front door."
        },
        "geo_location": {
          "$ref": "#/$defs/GeoLocation"
        },
        "brand_name": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The name of the requesting brand. This must be consistent across all deliveries for the same brand.",
          "example": "Inspire"
        },
        "sub_brand_name": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The name of the requesting individual brand, NOT the aggregator. This must be consistent across all deliveries for the same brand.",
          "example": "Dunkin Donuts"
        },
        "location_grouping_id": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "A reference identifier for grouping locations.",
          "example": "loc-group-123"
        },
        "location_grouping_name": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "A reference name for grouping locations.",
          "example": "All NY Stores"
        }
      },
      "description": "The information associated with a pickup location."
    },
    "SubItem": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "maxLength": 64,
          "minLength": 0,
          "type": "string",
          "description": "The name of the subitem.",
          "example": "Add cheese"
        },
        "description": {
          "maxLength": 128,
          "minLength": 0,
          "type": "string",
          "description": "The description of the subitem.",
          "example": "Single slice of American cheese."
        },
        "quantity": {
          "minimum": 0,
          "type": "integer",
          "description": "The quantity of this subitem, if applicable.",
          "format": "int32",
          "default": 0
        }
      },
      "description": "The information associated with a delivery subitem."
    },
    "TimePreferences": {
      "type": "object",
      "properties": {
        "pickup_time": {
          "type": "string",
          "description": "The preferred pickup time for the courier. Formatted as an ISO-8601 timestamp.",
          "format": "date-time",
          "example": "2024-03-14T19:22:51.999Z"
        },
        "dropoff_time": {
          "type": "string",
          "description": "The preferred dropoff time for the courier. Formatted as an ISO-8601 timestamp.",
          "format": "date-time",
          "example": "2024-03-14T19:22:51.999Z"
        }
      },
      "description": "The preferred pickup or dropoff time for the courier. Only use one of them."
    }
  }
}

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

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/grubhub-quoterequest"
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.