Uber Eats API

The Uber Eats Marketplace API enables partners to programmatically manage stores, menus, and orders on the Uber Eats platform. It supports real-time menu synchronization, order processing, store operations, promotional campaigns, and analytics reporting. Access requires written approval from Uber.

OpenAPI Specification

uber-eats-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Uber Eats API
  description: >-
    The Uber Eats Marketplace API enables partners to programmatically manage stores,
    menus, and orders on the Uber Eats platform. It supports real-time menu synchronization,
    order processing, store operations, promotional campaigns, and analytics reporting.
  version: 1.0.0
  contact:
    name: Uber Developer Support
    url: https://developer.uber.com/support
servers:
  - url: https://api.uber.com/v1
    description: Production
  - url: https://sandbox-api.uber.com/v1
    description: Sandbox
security:
  - BearerAuth: []
tags:
  - name: Stores
    description: Store management and operational status
  - name: Menus
    description: Menu items, modifiers, and pricing
  - name: Orders
    description: Order lifecycle management
  - name: Promotions
    description: Promotional campaigns and offers
  - name: Reporting
    description: Analytics and performance metrics
paths:
  /eats/stores:
    get:
      operationId: listStores
      summary: List Stores
      description: Returns a list of stores for the authenticated partner.
      tags:
        - Stores
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 20
          description: Number of stores to return.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            default: 0
          description: Offset for pagination.
      responses:
        '200':
          description: List of stores.
          content:
            application/json:
              schema:
                type: object
                properties:
                  stores:
                    type: array
                    items:
                      $ref: '#/components/schemas/Store'
                  total:
                    type: integer
  /eats/stores/{store_id}:
    get:
      operationId: getStore
      summary: Get Store
      description: Returns details for a specific store.
      tags:
        - Stores
      parameters:
        - name: store_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the store.
      responses:
        '200':
          description: Store details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
    patch:
      operationId: updateStore
      summary: Update Store
      description: Update store details such as operating hours and status.
      tags:
        - Stores
      parameters:
        - name: store_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the store.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreUpdate'
      responses:
        '200':
          description: Updated store details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
  /eats/stores/{store_id}/status:
    put:
      operationId: updateStoreStatus
      summary: Update Store Status
      description: Set the store's online or offline status.
      tags:
        - Stores
      parameters:
        - name: store_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the store.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - status
              properties:
                status:
                  type: string
                  enum:
                    - online
                    - offline
                  description: The desired store status.
      responses:
        '200':
          description: Store status updated.
  /eats/stores/{store_id}/menus:
    get:
      operationId: getStoreMenu
      summary: Get Store Menu
      description: Returns the current menu for a specific store.
      tags:
        - Menus
      parameters:
        - name: store_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the store.
      responses:
        '200':
          description: Menu details for the store.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Menu'
    put:
      operationId: updateStoreMenu
      summary: Update Store Menu
      description: Replace the full menu for a specific store.
      tags:
        - Menus
      parameters:
        - name: store_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the store.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Menu'
      responses:
        '200':
          description: Menu update accepted.
  /eats/orders/{order_id}:
    get:
      operationId: getOrder
      summary: Get Order
      description: Returns order details for a specific order ID.
      tags:
        - Orders
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the order.
      responses:
        '200':
          description: Order details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
  /eats/orders/{order_id}/accept_pos_order:
    post:
      operationId: acceptOrder
      summary: Accept Order
      description: Accept a pending order within the required acceptance window.
      tags:
        - Orders
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reason:
                  type: string
                  description: Reason for accepting the order.
      responses:
        '200':
          description: Order accepted successfully.
  /eats/orders/{order_id}/deny_pos_order:
    post:
      operationId: denyOrder
      summary: Deny Order
      description: Deny a pending order and specify a reason.
      tags:
        - Orders
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - reason
              properties:
                reason:
                  type: string
                  description: Reason for denying the order.
                reason_details:
                  type: string
                  description: Additional details about the denial reason.
      responses:
        '200':
          description: Order denied successfully.
  /eats/orders/{order_id}/cancel:
    post:
      operationId: cancelOrder
      summary: Cancel Order
      description: Cancel an accepted order.
      tags:
        - Orders
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - reason
              properties:
                reason:
                  type: string
                  description: Reason for cancellation.
      responses:
        '200':
          description: Order cancelled successfully.
  /eats/reports:
    post:
      operationId: generateReport
      summary: Generate Report
      description: Generate analytics and performance reports for stores.
      tags:
        - Reporting
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportRequest'
      responses:
        '202':
          description: Report generation initiated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  report_id:
                    type: string
                  status:
                    type: string
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 Bearer token
  schemas:
    Store:
      type: object
      properties:
        store_id:
          type: string
          description: Unique identifier for the store.
        name:
          type: string
          description: Store display name.
        status:
          type: string
          enum:
            - online
            - offline
          description: Current operational status.
        address:
          type: object
          properties:
            street_address:
              type: string
            city:
              type: string
            state:
              type: string
            zip_code:
              type: string
            country:
              type: string
        contact_emails:
          type: array
          items:
            type: string
            format: email
    StoreUpdate:
      type: object
      properties:
        name:
          type: string
          description: Updated store name.
        contact_emails:
          type: array
          items:
            type: string
            format: email
    Menu:
      type: object
      properties:
        categories:
          type: array
          items:
            $ref: '#/components/schemas/MenuCategory'
    MenuCategory:
      type: object
      properties:
        category_id:
          type: string
          description: Unique identifier for the category.
        title:
          type: object
          properties:
            en:
              type: string
              description: Category name in English.
        entities:
          type: array
          items:
            $ref: '#/components/schemas/MenuItem'
    MenuItem:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the menu item.
        external_data:
          type: string
          description: Partner's own identifier for the item.
        title:
          type: object
          properties:
            en:
              type: string
        description:
          type: object
          properties:
            en:
              type: string
        msrp:
          type: integer
          description: Price in minor currency units (cents).
        quantity_info:
          type: object
          properties:
            quantity:
              type: object
              properties:
                min_permitted:
                  type: integer
                max_permitted:
                  type: integer
    Order:
      type: object
      properties:
        id:
          type: string
          description: Unique order identifier.
        external_reference_id:
          type: string
          description: Partner's order reference.
        current_state:
          type: string
          enum:
            - CREATED
            - ACCEPTED
            - FULFILLED
            - DENIED
            - CANCELLED
          description: Current order state.
        store:
          type: object
          properties:
            name:
              type: string
            store_id:
              type: string
        cart:
          type: object
          properties:
            items:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  title:
                    type: string
                  quantity:
                    type: integer
                  price:
                    type: integer
        payment:
          type: object
          properties:
            charges:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  amount:
                    type: number
        placed_at:
          type: string
          format: date-time
          description: Timestamp when order was placed.
    ReportRequest:
      type: object
      required:
        - report_type
        - date_range
      properties:
        report_type:
          type: string
          description: Type of report to generate.
        store_ids:
          type: array
          items:
            type: string
          description: List of store IDs to include.
        date_range:
          type: object
          properties:
            start_date:
              type: string
              format: date
            end_date:
              type: string
              format: date