Doordash Menu Endpoints API

Endpoints for updating and creating menus

Operations 2

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /api/v1/menus Create a menu with store hours · Create Menu #
Ask an LLM
“What does it take to push a new menu with store hours?”
“Do I need to include special hours when creating a menu?”
Tell an agent
Create a menu for store {store} with open hours {open_hours} and special hours {special_hours}.
Set up a new menu tagged {reference} for store {store}, including hours {open_hours} and holiday hours {special_hours}.
PATCH /api/v1/menus/{id} Update an existing menu and its hours · Update Menu #
Ask an LLM
“Can I update an existing menu and its hours?”
“How do I change the open hours on a menu I already created?”
Tell an agent
Update menu {id} for store {store} with open hours {open_hours}.
Replace the special hours on menu {id} with {special_hours}.

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/doordash-menu-endpoints-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

doordash-menu-endpoints-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Doordash Menu Endpoints API
  version: 1.0.0
  x-logo:
    url: https://cdn.doordash.com/static/img/merchant/logo-red@3x.png
    backgroundColor: '#FFFFFF'
    altText: Doordash Marketplace
    href: https://developer.doordash.com/
  description: 'Operations tagged Menu Endpoints across 2 of this provider''s published API definitions: doordash-marketplace-legacy-openapi.yml, doordash-marketplace-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://pointofsale.doordash.com
- url: https://openapi.doordash.com/marketplace
tags:
- name: Menu Endpoints
  x-displayName: Menu Endpoints
  description: Endpoints for updating and creating menus
paths:
  /api/v1/menus:
    post:
      tags:
      - Menu Endpoints
      summary: Create Menu
      operationId: menuCreate
      security:
      - Authorization: []
      parameters:
      - $ref: '#/components/parameters/UserAgent'
      - $ref: '#/components/parameters/Authorization'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuCreateUpdateRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuCreateUpdateResponse'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: Request Entity Too Large
        '429':
          description: Request is rate limited
        '500':
          description: Internal Server Error
      x-codegen-request-body-name: body
    servers:
    - url: https://pointofsale.doordash.com
  /api/v1/menus/{id}:
    patch:
      tags:
      - Menu Endpoints
      summary: Update Menu
      operationId: menuUpdate
      security:
      - Authorization: []
      parameters:
      - $ref: '#/components/parameters/MenuId'
      - $ref: '#/components/parameters/UserAgent'
      - $ref: '#/components/parameters/Authorization'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuCreateUpdateRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuCreateUpdateResponse'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: Request Entity Too Large
        '429':
          description: Request is rate limited
        '500':
          description: Internal Server Error
      x-codegen-request-body-name: body
    servers:
    - url: https://pointofsale.doordash.com
components:
  schemas:
    DishInfo:
      type: object
      properties:
        nutritional_info:
          $ref: '#/components/schemas/NutritionalInfo'
        classification_info:
          $ref: '#/components/schemas/ClassificationInfo'
    ItemExtra:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: the given name of this instance
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        sort_id:
          type: integer
        min_num_options:
          type: integer
        max_num_options:
          type: integer
        num_free_options:
          type: integer
        min_option_choice_quantity:
          type: integer
        max_option_choice_quantity:
          type: integer
        min_aggregate_options_quantity:
          type: integer
        max_aggregate_options_quantity:
          type: integer
        options:
          type: array
          items:
            $ref: '#/components/schemas/ItemExtraOption'
    NestedL2ItemExtraOption:
      type: object
      required:
      - name
      - price
      properties:
        name:
          type: string
          description: the given name of this instance
        description:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        price:
          type: integer
        base_price:
          type: integer
        default:
          type: boolean
        sort_id:
          type: integer
        tax_rate:
          type: string
        tax_category:
          type: string
        item_extra_option_special_hours:
          type: array
          items:
            $ref: '#/components/schemas/ItemSpecialHour'
        operation_context:
          type: array
          items:
            type: string
        quantity_info:
          type: object
          $ref: '#/components/schemas/QuantityInfo'
        dish_info:
          type: object
          $ref: '#/components/schemas/DishInfo'
    NutritionalInfo:
      type: object
      properties:
        calorific_info:
          $ref: '#/components/schemas/CalorificInfo'
    Store:
      type: object
      required:
      - merchant_supplied_id
      - provider_type
      properties:
        merchant_supplied_id:
          type: string
          example: 1dfa934a-190c-43a9-b2e0-449e5b8cccde
        provider_type:
          type: string
          example: positouch
    ClassificationInfo:
      type: object
      properties:
        has_side:
          type: boolean
        is_hot:
          type: boolean
        is_entree:
          type: boolean
        has_alcoholic_items:
          type: boolean
        service_types:
          type: array
          items:
            type: string
        classification_tags:
          type: array
          items:
            type: string
            enum:
            - TAG_KEY_DIETARY_VEGETARIAN
            - TAG_KEY_DIETARY_VEGAN
            - TAG_KEY_DIETARY_GLUTEN_FREE
    ItemExtraOption:
      type: object
      required:
      - name
      - price
      properties:
        name:
          type: string
          description: the given name of this instance
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        price:
          type: integer
        base_price:
          type: integer
        default:
          type: boolean
        sort_id:
          type: integer
        tax_rate:
          type: string
        tax_category:
          type: string
        item_extra_option_special_hours:
          type: array
          items:
            $ref: '#/components/schemas/ItemSpecialHour'
        operation_context:
          type: array
          description: Not yet available
          items:
            type: string
        quantity_info:
          type: object
          $ref: '#/components/schemas/QuantityInfo'
        dish_info:
          type: object
          $ref: '#/components/schemas/DishInfo'
        extras:
          type: array
          items:
            $ref: '#/components/schemas/NestedItemExtra'
    MenuCreateUpdateRequest:
      type: object
      required:
      - store
      - open_hours
      - special_hours
      properties:
        reference:
          type: string
        store:
          type: object
          $ref: '#/components/schemas/Store'
        open_hours:
          type: array
          items:
            $ref: '#/components/schemas/StoreOpenHour'
        special_hours:
          type: array
          items:
            $ref: '#/components/schemas/StoreSpecialHour'
        menu:
          type: object
          $ref: '#/components/schemas/Menu'
    QuantityInfo:
      type: object
      properties:
        default_quantity:
          type: integer
        charge_above:
          type: integer
    Item:
      type: object
      required:
      - name
      - merchant_supplied_id
      - price
      properties:
        name:
          type: string
          description: the given name of this instance
        description:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        is_alcohol:
          type: boolean
        is_bike_friendly:
          type: boolean
        sort_id:
          type: integer
        price:
          type: integer
        base_price:
          type: integer
        item_special_hours:
          type: array
          items:
            $ref: '#/components/schemas/ItemSpecialHour'
        extras:
          type: array
          items:
            $ref: '#/components/schemas/ItemExtra'
        tax_rate:
          type: string
        tax_category:
          type: string
        original_image_url:
          type: string
          description: Item image URL in JPG|JPEG|PNG format, min resolution (1600w x 800h), aspect ratio 16:9 and max size 2MB. Initial image ingestion will go through approval process
        operation_context:
          type: array
          description: Not yet available
          items:
            type: string
        dish_info:
          type: object
          $ref: '#/components/schemas/DishInfo'
    NestedItemExtraOption:
      type: object
      required:
      - name
      - price
      properties:
        name:
          type: string
          description: the given name of this instance
        description:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        price:
          type: integer
        base_price:
          type: integer
        default:
          type: boolean
        sort_id:
          type: integer
        tax_rate:
          type: string
        tax_category:
          type: string
        item_extra_option_special_hours:
          type: array
          items:
            $ref: '#/components/schemas/ItemSpecialHour'
        operation_context:
          type: array
          description: Not yet available
          items:
            type: string
        quantity_info:
          type: object
          $ref: '#/components/schemas/QuantityInfo'
        dish_info:
          type: object
          $ref: '#/components/schemas/DishInfo'
        extras:
          type: array
          items:
            $ref: '#/components/schemas/NestedL2ItemExtra'
    CalorificInfo:
      type: object
      properties:
        display_type:
          type: string
        lower_range:
          type: integer
        higher_range:
          type: integer
    NestedItemExtra:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: the given name of this instance
        description:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        sort_id:
          type: integer
        min_num_options:
          type: integer
        max_num_options:
          type: integer
        num_free_options:
          type: integer
        min_option_choice_quantity:
          type: integer
        max_option_choice_quantity:
          type: integer
        min_aggregate_options_quantity:
          type: integer
        max_aggregate_options_quantity:
          type: integer
        options:
          type: array
          items:
            $ref: '#/components/schemas/NestedItemExtraOption'
    StoreSpecialHour:
      type: object
      properties:
        date:
          type: string
          example: '2021-12-11'
        closed:
          type: boolean
          description: Indicates if store is closed or opened at this special hour
          example: true
        start_time:
          type: string
          description: Start time in format HH:MM:SS
          example: '13:00:00'
        end_time:
          type: string
          description: End time in format HH:MM:SS
          example: '18:00:00'
    NestedL2ItemExtra:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: the given name of this instance
        description:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        sort_id:
          type: integer
        min_num_options:
          type: integer
        max_num_options:
          type: integer
        num_free_options:
          type: integer
        min_option_choice_quantity:
          type: integer
        max_option_choice_quantity:
          type: integer
        min_aggregate_options_quantity:
          type: integer
        max_aggregate_options_quantity:
          type: integer
        options:
          type: array
          items:
            $ref: '#/components/schemas/NestedL2ItemExtraOption'
    ItemSpecialHour:
      type: object
      properties:
        day_index:
          $ref: '#/components/schemas/DayIndex'
        start_time:
          type: string
          description: Start time in format HH:MM:SS
          example: '13:00:00'
        end_time:
          type: string
          description: End time in format HH:MM:SS
          example: '18:00:00'
        start_date:
          type: string
        end_date:
          type: string
    Menu:
      type: object
      required:
      - name
      properties:
        name:
          description: the given name of this instance
          type: string
        subtitle:
          type: string
        merchant_supplied_id:
          description: ID as it's stored in your system
          type: string
        active:
          type: boolean
        experience:
          description: (do not use this field for marketplace integration) optional field used only for Voice experience
          type: string
          enum:
          - voice
        categories:
          type: array
          items:
            $ref: '#/components/schemas/MenuCategory'
    MenuCreateUpdateResponse:
      type: object
      properties:
        reference:
          type: UUID
          description: menu job reference
        status:
          type: string
          description: JobStatus.IN_PROGRESS
    StoreOpenHour:
      type: object
      properties:
        day_index:
          type: string
          enum:
          - MON
          - TUE
          - WED
          - THU
          - FRI
          - SAT
          - SUN
          example: MON
        start_time:
          type: string
          description: Start time in format HH:MM:SS
          example: '13:00:00'
        end_time:
          type: string
          description: End time in format HH:MM:SS
          example: '18:00:00'
    DayIndex:
      type: string
      enum:
      - MON
      - TUE
      - WED
      - THU
      - FRI
      - SAT
      - SUN
      example: MON
    MenuCategory:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: the given name of this instance
        subtitle:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        sort_id:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/Item'
    Item_2:
      type: object
      required:
      - name
      - merchant_supplied_id
      - price
      properties:
        name:
          type: string
          description: the given name of this instance
        description:
          type: string
        merchant_supplied_id:
          type: string
          description: ID as it's stored in your system
        active:
          type: boolean
          default: true
        is_alcohol:
          type: boolean
        is_bike_friendly:
          type: boolean
        sort_id:
          type: integer
        price:
          type: integer
        base_price:
          type: integer
        item_special_hours:
          type: array
          items:
            $ref: '#/components/schemas/ItemSpecialHour'
        extras:
          type: array
          items:
            $ref: '#/components/schemas/ItemExtra'
        tax_rate:
          type: string
        tax_category:
          type: string
        original_image_url:
          type: string
          description: Item image URL in JPG|JPEG|PNG format, min resolution (1400w x 800h), aspect ratio 16:9 and max size 2MB. Initial image ingestion will go through approval process
        operation_context:
          type: array
          description: Not yet available
          items:
            type: string
        dish_info:
          type: object
          $ref: '#/components/schemas/DishInfo'
    MenuCreateUpdateResponse_2:
      type: object
      properties:
        reference:
          type: UUID
          description: menu job reference ID
        status:
          type: string
          description: JobStatus.IN_PROGRESS
  parameters:
    UserAgent:
      name: user_agent
      in: header
      description: Your company identity. Format is `[name]/[version]`. like `Sicom/1.0`
      style: simple
      explode: false
      schema:
        type: string
    Authorization:
      name: authorization
      in: header
      description: The access token. Format is `[type] [credentials]`. like `Bearer $101$gkeikcha3`
      style: simple
      explode: false
      schema:
        type: string
    MenuId:
      in: path
      name: id
      required: true
      schema:
        type: string
      description: A Menu UUID
  securitySchemes:
    Authorization:
      type: apiKey
      name: Authorization
      in: header
x-refined-from:
- doordash-marketplace-legacy-openapi.yml
- doordash-marketplace-openapi.yml