Grubhub Webhooks API

The Webhooks API from Grubhub — 0 operation(s) for webhooks.

Documentation

📖
Documentation
https://developer.grubhub.com/api/menu
📖
APIReference
https://developer.grubhub.com/api/menu
📖
Documentation
https://developer.grubhub.com/api/orders
📖
APIReference
https://developer.grubhub.com/api/orders
📖
Documentation
https://developer.grubhub.com/api/merchant-data
📖
APIReference
https://developer.grubhub.com/api/merchant-data
📖
Documentation
https://developer.grubhub.com/api/merchant-schedules
📖
APIReference
https://developer.grubhub.com/api/merchant-schedules
📖
Documentation
https://developer.grubhub.com/api/busy-intervals
📖
APIReference
https://developer.grubhub.com/api/busy-intervals
📖
Documentation
https://developer.grubhub.com/api/deliveries
📖
APIReference
https://developer.grubhub.com/api/deliveries
📖
Documentation
https://developer.grubhub.com/api/daas-endpoints
📖
APIReference
https://developer.grubhub.com/api/daas-endpoints
📖
Documentation
https://developer.grubhub.com/api/daas-webhooks
📖
APIReference
https://developer.grubhub.com/api/daas-webhooks
📖
Documentation
https://developer.grubhub.com/api/onboarding
📖
APIReference
https://developer.grubhub.com/api/onboarding
📖
Documentation
https://developer.grubhub.com/api/reporting-endpoints
📖
APIReference
https://developer.grubhub.com/api/reporting-endpoints
📖
Documentation
https://developer.grubhub.com/api/reporting-webhooks
📖
APIReference
https://developer.grubhub.com/api/reporting-webhooks
📖
Documentation
https://developer.grubhub.com/api/testing
📖
APIReference
https://developer.grubhub.com/api/testing

Specifications

Other Resources

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/grubhub-webhooks-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

grubhub-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Grubhub Webhooks API
  version: '1.0'
  description: 'Operations tagged Webhooks across 2 of this provider''s published API definitions: grubhub-connect-webhooks-openapi.yml, grubhub-reporting-webhooks-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
  description: preprod
- url: https://api-third-party-gtm.grubhub.com
  description: prod
tags:
- name: Webhooks
paths: {}
webhooks:
  '[Egress] Delivery Refund Update Webhook':
    post:
      tags:
      - Webhooks
      summary: Delivery refund update
      requestBody:
        description: Information about a Delivery Refund Update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeliveryRefundUpdate'
              description: Delivery Refund Update
      responses: {}
    servers:
    - url: https://api-third-party-gtm-pp.grubhub.com
      description: preprod
    - url: https://api-third-party-gtm.grubhub.com
      description: prod
  '[Egress] Delivery Status Update Webhook':
    post:
      tags:
      - Webhooks
      summary: Delivery status update
      requestBody:
        description: Information about a Delivery Status Update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeliveryStatusUpdate'
              description: Delivery Status Update
      responses: {}
    servers:
    - url: https://api-third-party-gtm-pp.grubhub.com
      description: preprod
    - url: https://api-third-party-gtm.grubhub.com
      description: prod
  '[Egress] Report Status Update Webhook':
    post:
      tags:
      - Webhooks
      summary: Report status update
      requestBody:
        description: Information about a requested report
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MerchantReportStatusWebhook'
              description: Report Status Update
      responses: {}
    servers:
    - url: https://api-third-party-gtm-pp.grubhub.com
      description: preprod
    - url: https://api-third-party-gtm.grubhub.com
      description: prod
components:
  schemas:
    Assigned:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the delivery has been assigned.
      required:
      - timestamp
      - type
    ReturnInitiated:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the delivery is in-transit back to the pickup location in order to return some portion of the delivery's contents.
      required:
      - timestamp
      - type
    ProofOfDelivery:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      - type: object
        properties:
          dropoff_image_details:
            $ref: '#/components/schemas/DropoffImageDetails'
      description: An event containing proof of delivery information.
      required:
      - timestamp
      - type
    Courier:
      description: A courier.
      properties:
        name:
          type: string
          description: The display name of the courier assigned to a delivery.
          example: Nick
        delivery_method:
          type: string
          description: Means of transportation by which a courier may be delivering.
          enum:
          - CAR
          - BIKE
          - SCOOTER
          - WALK
          example: CAR
        location:
          $ref: '#/components/schemas/GeoLocation'
      required:
      - delivery_method
      - location
      - name
    PickupVerificationDetails:
      properties:
        result:
          type: string
          description: The result of the pickup verification.
          example: SUCCESS
        capture_method:
          type: string
          description: The method used to capture the pickup verification.
          enum:
          - MANUAL_ENTRY
          - QR_SCAN
          - PHOTO
          example: QR_SCAN
        failure_reason:
          type: string
          description: The reason for a failed pickup verification. Null when result is SUCCESS.
        attempts_count:
          type: integer
          format: int32
          description: The total number of verification attempts made.
        photo_url:
          type: string
          description: A URL to the pickup verification photo. Null for code-match events.
    DropoffImageDetails:
      properties:
        photo_url:
          type: string
          description: A URL to the dropoff photo taken by the driver upon completing the delivery.
          example: http://www.grubhub.com/example.png
        photo_capture_time:
          type: string
          format: date-time
          description: The timestamp at which the dropoff photo was captured. Formatted as an ISO-8601 timestamp.
          example: '2024-05-28T00:00:00Z'
        photo_capture_location:
          $ref: '#/components/schemas/GeoLocation'
        photo_expiration_time:
          type: string
          format: date-time
          description: The timestamp when the dropoff photo will expire.
          example: '2024-05-28T00:00:00Z'
      required:
      - photo_capture_location
      - photo_capture_time
      - photo_expiration_time
      - photo_url
    Created:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event representing the creation of a delivery.
      required:
      - timestamp
      - type
    DeliveryRefundUpdate:
      type: object
      description: Reports the final decision regarding a submitted delivery refund request to clients via webhook.
      properties:
        delivery_id:
          type: string
          format: uuid
          description: The UUID associated with the delivery.
          example: 0ec346bd-635a-4a07-8f35-44962a8bcc5b
        accepted:
          type: boolean
          description: Whether the refund was accepted or not.
          example: true
        reason:
          type: string
          description: The reason for accepting or rejecting the refund.
          example: DriverNotCourteous
        description:
          type: string
          description: Additional descriptive notes about the refund decision.
          example: Grubhub accepts the full refund amount.
        amounts:
          $ref: '#/components/schemas/RefundAmount'
      required:
      - accepted
      - delivery_id
      - reason
    ClientData:
      description: Partner/client-supplied reference identifiers for this delivery.
      properties:
        external_id:
          type: string
          description: The partner's own identifier for this delivery.
        external_merchant_id:
          type: string
          description: The partner's identifier for the merchant associated with this delivery.
        external_source:
          type: string
          description: The source system that supplied the external identifiers.
        reference_number:
          type: string
          description: A partner-supplied reference number for this delivery.
    EstimatedEventTimes:
      description: The latest known estimates for the delivery pickup and dropoff times. Will be the actual times if the event has already occurred.
      properties:
        picked_up:
          type: string
          format: date-time
          description: The estimated pickup time, or the actual pickup time if the pickup has already occurred. Formatted as an ISO-8601 timestamp.
          example: '2024-05-28T00:00:00Z'
        dropped_off:
          type: string
          format: date-time
          description: The estimated drop-off time, or the actual drop-off time if the pickup has already occurred. Formatted as an ISO-8601 timestamp.
          example: '2024-05-28T00:00:00Z'
      required:
      - dropped_off
      - picked_up
    Unassigned:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the delivery has been unassigned. An unassigned delivery may still be reassigned to another driver later.
      required:
      - timestamp
      - type
    InTransit:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the assigned courier has departed the restaurant with the delivery.
      required:
      - timestamp
      - type
    Delivery:
      description: The information and historical events associated with a delivery.
      properties:
        delivery_id:
          type: string
          format: uuid
          description: A unique identifier of this delivery.
          example: 0ec346bd-635a-4a07-8f35-44962a8bcc5b
        events:
          type: array
          description: A history of notable events that have occurred for this delivery.
          items:
            $ref: '#/components/schemas/DeliveryEvent'
        estimated_event_times:
          $ref: '#/components/schemas/EstimatedEventTimes'
        client_data:
          $ref: '#/components/schemas/ClientData'
      required:
      - delivery_id
      - estimated_event_times
      - events
    CourierAtDropoff:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the assigned courier has arrived at the delivery's dropoff location.
      required:
      - timestamp
      - type
    PickupVerification:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      - type: object
        properties:
          pickup_verification_details:
            $ref: '#/components/schemas/PickupVerificationDetails'
      description: An event containing pickup verification information.
      required:
      - timestamp
      - type
    PickedUp:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the delivery has been picked up by the assigned courier.
      required:
      - timestamp
      - type
    ReturnCompleted:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating that the necessary portion of the delivery's contents have been successfully returned to the pickup location.
      required:
      - timestamp
      - type
    Canceled:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      - type: object
        properties:
          source:
            type: string
            description: Types of actors who may update a delivery.
            enum:
            - CLIENT
            - GRUBHUB
            example: CLIENT
          reason_code:
            type: string
            description: Codes for reasons why a delivery was canceled.
            enum:
            - MERCHANT_NOT_READY_FOR_PICKUP
            - MERCHANT_UNABLE_TO_FULFILL_ORDER
            - MERCHANT_CLOSED
            - MERCHANT_PICKUP_DELAYED
            - MERCHANT_ITEM_MISSING
            - CUSTOMER_CONTENTS_ISSUE
            - ORDER_PICKED_UP_BY_ANOTHER_DRIVER
            - DRIVER_UNABLE_TO_FINISH_DELIVERY
            - UNABLE_TO_ASSIGN_DRIVER
            - DELIVERY_CANCELLATION_OTHER_REASON
            example: CUSTOMER_CANCEL
          reason_comment:
            type: string
            description: Additional detail about the cancellation.
            example: Customer no longer wants delivery.
      description: An event indicating that the delivery was canceled.
      required:
      - timestamp
      - type
    Delivered:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      - type: object
        properties:
          dropoff_image_details:
            allOf:
            - $ref: '#/components/schemas/DropoffImageDetails'
            deprecated: true
            description: Use `dropoff_image_details` in the `ProofOfDelivery` event instead.
      description: An event indicating the delivery has been successfully delivered.
      required:
      - timestamp
      - type
    DeliveryEvent:
      description: An event during the course of a single delivery's lifecycle.
      discriminator:
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/Created'
      - $ref: '#/components/schemas/Assigned'
      - $ref: '#/components/schemas/Unassigned'
      - $ref: '#/components/schemas/CourierAtPickup'
      - $ref: '#/components/schemas/PickupVerification'
      - $ref: '#/components/schemas/PickedUp'
      - $ref: '#/components/schemas/InTransit'
      - $ref: '#/components/schemas/CourierAtDropoff'
      - $ref: '#/components/schemas/Delivered'
      - $ref: '#/components/schemas/ProofOfDelivery'
      - $ref: '#/components/schemas/ReturnInitiated'
      - $ref: '#/components/schemas/ReturnCompleted'
      - $ref: '#/components/schemas/Canceled'
      properties:
        type:
          type: string
          description: The type of this event.
          enum:
          - CREATED
          - ASSIGNED
          - UNASSIGNED
          - COURIER_AT_PICKUP
          - PICKED_UP
          - IN_TRANSIT
          - COURIER_AT_DROPOFF
          - DELIVERED
          - PROOF_OF_DELIVERY
          - RETURN_INITIATED
          - RETURN_COMPLETED
          - CANCELED
          - PICKUP_VERIFICATION
          example: PICKED_UP
        timestamp:
          type: string
          format: date-time
          description: The time at which this event occurred. Formatted as an ISO-8601 timestamp.
          example: '2024-05-28T00:00:00Z'
      required:
      - timestamp
      - type
    GeoLocation:
      description: The last known location of the courier.
      properties:
        lat:
          type: number
          format: double
          description: The latitude of the location.
          example: 41.88320791307697
        lng:
          type: number
          format: double
          description: The longitude of the location.
          example: -87.63142796027925
      required:
      - lat
      - lng
    DeliveryStatusUpdate:
      type: object
      description: Provides information about the status of a delivery and the courier assigned to it, pushed to clients via webhook.
      properties:
        update_type:
          type: string
          description: The type of a DeliveryStatusUpdate.
          enum:
          - DELIVERY_STATUS_UPDATE
          - COURIER_LOCATION_UPDATE
          - ETA_UPDATE
        delivery:
          $ref: '#/components/schemas/Delivery'
        courier:
          $ref: '#/components/schemas/Courier'
        tracking_url:
          type: string
          description: The url for the delivery tracking UI.
      required:
      - delivery
      - update_type
    RefundAmount:
      description: The amount of the refund requested, broken down into various categories.
      properties:
        delivery_fee:
          type: integer
          format: int32
          description: The amount of the refund requested to be taken from the delivery fee, formatted as cents.
          example: 100
          minimum: 0
        tip:
          type: integer
          format: int32
          description: The amount of the refund requested to be taken from the tip, formatted as cents.
          example: 333
          minimum: 0
        contents_value:
          type: integer
          format: int32
          description: The amount of the refund requested to be taken from the contents value, formatted as cents.
          example: 542
          minimum: 0
        return_fee:
          type: integer
          format: int32
          description: The amount of the refund requested to be taken from the return fee, formatted as cents.
          example: 50
          minimum: 0
      required:
      - contents_value
      - delivery_fee
      - return_fee
      - tip
    CourierAtPickup:
      allOf:
      - $ref: '#/components/schemas/DeliveryEvent'
      description: An event indicating the assigned courier has arrived at the delivery's pickup location.
      required:
      - timestamp
      - type
    MerchantReportStatusWebhook:
      type: object
      description: Webhook for reporting status updates.
      properties:
        report_uuid:
          type: string
          format: uuid
          description: A unique identifier for the report.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
        download_report_request_url:
          type: string
          description: URL to download the report. Make a GET request to this URL to get the s3 download link. This field is empty for NO_DATA or ERROR status.
          example: https://api-gtm.grubhub.com/merchant/reporting/v1/reports/f47ac10b-58cc-4372-a567-0e02b2c3d479
        report_status:
          type: string
          description: Status of the report. Possible values are COMPLETE, ERROR, or NO_DATA.
          example: COMPLETE
        message:
          type: string
          description: Message providing additional information about the report status. This field is empty for COMPLETE status.
      required:
      - download_report_request_url
      - message
      - report_status
      - report_uuid
      title: Merchant Report Status Webhook
x-refined-from:
- grubhub-connect-webhooks-openapi.yml
- grubhub-reporting-webhooks-openapi.yml