Sysco Food Distribution API

The Sysco Food Distribution API provides programmatic access to Sysco's food distribution platform for product catalog browsing, order management, delivery tracking, account management, and pricing. Available through the Sysco APIC Developer Portal, the APIs enable partners, restaurants, and food service operators to integrate with Sysco's ordering systems, browse product catalogs with over 30 data fields, track deliveries, and manage their food supply chain operations.

OpenAPI Specification

sysco-food-distribution-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Sysco Food Distribution API
  description: >-
    The Sysco Food Distribution API provides programmatic access to Sysco's
    food distribution platform for product ordering, catalog browsing,
    delivery tracking, account management, and supply chain integration.
    Available through the Sysco API Central developer portal, the API enables
    restaurants, food service operators, and partners to integrate with Sysco's
    distribution operations and ordering systems.
  version: '1.0'
  contact:
    url: https://apic-devportal.sysco.com/
servers:
  - url: https://api.sysco.com
    description: Production
  - url: https://api-stg.sysco.com
    description: Staging
security:
  - bearerAuth: []
tags:
  - name: Products
    description: Browse and search the Sysco product catalog.
  - name: Orders
    description: Create and manage food distribution orders.
  - name: Deliveries
    description: Track delivery status and scheduling.
  - name: Accounts
    description: Manage customer account information.
  - name: Pricing
    description: Retrieve product pricing and contract pricing.
paths:
  /products:
    get:
      operationId: listProducts
      summary: List Products
      description: >-
        Retrieves a list of products from the Sysco food distribution
        catalog with filtering by category, brand, dietary attributes,
        and availability. Supports over 30 fields of product data including
        real-time stock status and next receive dates.
      tags:
        - Products
      parameters:
        - name: category
          in: query
          description: Filter by product category.
          schema:
            type: string
        - name: keyword
          in: query
          description: Search by keyword.
          schema:
            type: string
        - name: brand
          in: query
          description: Filter by brand name.
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: pageSize
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Product list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
        '401':
          description: Unauthorized
  /products/{productId}:
    get:
      operationId: getProduct
      summary: Get Product
      description: >-
        Retrieves detailed information about a specific product including
        nutrition facts, allergens, packaging details, and pricing.
      tags:
        - Products
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: string
          description: The Sysco product identifier (SUPC).
      responses:
        '200':
          description: Product details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '404':
          description: Product not found
  /orders:
    get:
      operationId: listOrders
      summary: List Orders
      description: >-
        Retrieves a list of orders placed with Sysco, including order status,
        items, and delivery scheduling information. Supports up to 14 months
        of order history.
      tags:
        - Orders
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum: [pending, confirmed, shipped, delivered, cancelled]
        - name: dateFrom
          in: query
          schema:
            type: string
            format: date
        - name: dateTo
          in: query
          schema:
            type: string
            format: date
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Order list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderList'
    post:
      operationId: createOrder
      summary: Create Order
      description: >-
        Creates a new food distribution order with specified products,
        quantities, delivery date, and preferences.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
      responses:
        '201':
          description: Order created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Bad request
  /orders/{orderId}:
    get:
      operationId: getOrder
      summary: Get Order
      description: Retrieves details for a specific order including items and status.
      tags:
        - Orders
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '404':
          description: Order not found
    delete:
      operationId: cancelOrder
      summary: Cancel Order
      description: Cancels a pending order that has not yet been shipped.
      tags:
        - Orders
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order cancelled
        '404':
          description: Order not found
  /deliveries:
    get:
      operationId: listDeliveries
      summary: List Deliveries
      description: >-
        Retrieves a list of scheduled and completed deliveries with tracking
        information and estimated arrival times.
      tags:
        - Deliveries
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum: [scheduled, in_transit, delivered]
        - name: dateFrom
          in: query
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Delivery list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryList'
  /deliveries/{deliveryId}:
    get:
      operationId: getDelivery
      summary: Get Delivery
      description: Retrieves tracking and status details for a specific delivery.
      tags:
        - Deliveries
      parameters:
        - name: deliveryId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Delivery details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delivery'
  /accounts:
    get:
      operationId: listAccounts
      summary: List Accounts
      description: Retrieves customer account information.
      tags:
        - Accounts
      responses:
        '200':
          description: Account list returned
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Account'
  /accounts/{accountId}:
    get:
      operationId: getAccount
      summary: Get Account
      description: Retrieves details for a specific customer account.
      tags:
        - Accounts
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Account details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
  /pricing:
    get:
      operationId: listPricing
      summary: List Pricing
      description: >-
        Retrieves contract pricing for products available to the customer account,
        including promotional pricing and volume discounts.
      tags:
        - Pricing
      parameters:
        - name: productId
          in: query
          schema:
            type: string
        - name: category
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Pricing information returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingList'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    ProductList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Product'
        totalCount:
          type: integer
        page:
          type: integer
    Product:
      type: object
      properties:
        productId:
          type: string
          description: Sysco Universal Product Code (SUPC).
        name:
          type: string
        brand:
          type: string
        category:
          type: string
        gtin:
          type: string
          description: Global Trade Item Number barcode.
        packCount:
          type: integer
        size:
          type: string
        unitOfMeasure:
          type: string
        storageType:
          type: string
          enum: [refrigerated, frozen, dry]
        inStock:
          type: boolean
        nextReceiveDate:
          type: string
          format: date
        description:
          type: string
    OrderList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Order'
        totalCount:
          type: integer
    Order:
      type: object
      properties:
        orderId:
          type: string
        status:
          type: string
          enum: [pending, confirmed, shipped, delivered, cancelled]
        deliveryDate:
          type: string
          format: date
        totalAmount:
          type: number
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
        createdAt:
          type: string
          format: date-time
    OrderRequest:
      type: object
      required:
        - items
        - deliveryDate
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
        deliveryDate:
          type: string
          format: date
        specialInstructions:
          type: string
    OrderItem:
      type: object
      required:
        - productId
        - quantity
      properties:
        productId:
          type: string
        quantity:
          type: integer
        unitOfMeasure:
          type: string
        price:
          type: number
    DeliveryList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Delivery'
    Delivery:
      type: object
      properties:
        deliveryId:
          type: string
        orderId:
          type: string
        status:
          type: string
          enum: [scheduled, in_transit, delivered]
        scheduledDate:
          type: string
          format: date
        estimatedArrival:
          type: string
          format: date-time
        trackingNumber:
          type: string
        driverName:
          type: string
    Account:
      type: object
      properties:
        accountId:
          type: string
        name:
          type: string
        type:
          type: string
          enum: [restaurant, healthcare, education, hospitality]
        address:
          type: object
          properties:
            street:
              type: string
            city:
              type: string
            state:
              type: string
            zipCode:
              type: string
        contactEmail:
          type: string
          format: email
    PricingList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ProductPrice'
    ProductPrice:
      type: object
      properties:
        productId:
          type: string
        contractPrice:
          type: number
        listPrice:
          type: number
        currency:
          type: string
          default: USD
        effectiveDate:
          type: string
          format: date
        expirationDate:
          type: string
          format: date