API reference blizzfullMenuSchema.json

Blizzfull Menu (import)

A whole menu, as a point of sale or partner sends it to Blizzfull to create or update a restaurant's menu.

JSON Schema apiv2.blizzfull.com/schema/blizzfullMenuSchema.json Copy on this site

About

How an import works:

  • Every ID is yours (the sender's): categories, items, sizes, option groups and options. Blizzfull remembers which of its records each of your IDs became, so importing the same IDs again updates those records in place. Keep IDs stable. An option's ID only needs to be unique within its group.
  • Arrays are ordered: the menu shows categories, items, groups and options in the order you send them.
  • Prices are dollars as numbers (9.99), not cents.
  • Option groups are defined once in option_groups and attached to items (or whole categories) by ID through groups. Only groups that something attaches are imported; the same goes for sizes.
  • Unknown fields are ignored, so you can send extra data.

Used by POST /menu/import (request), POST /menu/importExternalPOSMenu/{posName} (request)

id

integer | string

Your ID for the record. Must be stable between imports and must not be 0 or empty.

Used by category.id, item.id, item_size.id, size.id, option_group.id, option.id, option.sub_options.id, option_group_link.id, option_link.id, option_link.sizePriceOverrides.id, option_link.sub_options.id, option_link.sub_options.options.id

images

string | string[]

Image URLs: one string, or an array of strings. Each must be absolute, public and point at an image; Blizzfull downloads them during the import, and a URL that is not an image stops the import.

Example
"https://example.com/images/wings.jpg"

Used by category.imageURL, category.imageUrl, item.imageURL, item.imageUrl

store_hours

object

Ordering hours by weekday, or for one date (MM/DD). Each value is a list of [open, close] ranges in 24-hour HH:MM. A weekday you leave out is closed.

Example
{
  "monday": [
    [
      "11:00",
      "14:30"
    ],
    [
      "17:00",
      "21:00"
    ]
  ],
  "12/25": []
}

Used by MenuImport.merchant.hours.delivery, MenuImport.merchant.hours.pickup

No other keys.

time_range

string[]

An [open, close] pair in 24-hour HH:MM.

Example
["11:00","21:30"]
Length
Exactly 2 items

Used by store_hours.key, category_hours.key

category_hours

object

When a category can be ordered, by weekday: {"monday": [["11:00", "14:45"]]}. Only the first range of each day is used. Times run from 04:00 to 28:00 (4 AM the next morning), and ["00:00", "00:00"] closes the day. A weekday you leave out is closed, so {} hides the category all week. Leave hours out entirely for a category available whenever the restaurant is open.

Used by category.hours

category

object Category

A section of the menu holding items, and optionally one level of subcategories.

Used by MenuImport.categories, category.children

  • ididRequired

    Your ID for the record. Must be stable between imports and must not be 0 or empty.

  • namestringRequired
  • activeboolean

    False hides the category, whatever its hours. Defaults to true. Applied when an existing category is updated; a newly created category is always shown.

  • When a category can be ordered, by weekday: {"monday": [["11:00", "14:45"]]}. Only the first range of each day is used. Times run from 04:00 to 28:00 (4 AM the next morning), and ["00:00", "00:00"] closes the day. A weekday you leave out is closed, so {} hides the category all week. Leave hours out entirely for a category available whenever the restaurant is open.

  • Image URLs: one string, or an array of strings. Each must be absolute, public and point at an image; Blizzfull downloads them during the import, and a URL that is not an image stops the import.

  • Older spelling of imageURL, used when imageURL is absent.

  • Option groups attached to every item in the category, placed before each item's own groups.

  • The category's items, in display order. An item ID that appears in more than one category is imported once, in the last category it appears in.

  • Subcategories. One level only: a subcategory's own children are ignored.

item

object Menu item

Something a customer can order, with a flat price or a price per size, and the option groups that customize it.

Used by category.items

  • ididRequired

    Your ID for the record. Must be stable between imports and must not be 0 or empty.

  • namestringRequired
  • descriptionstring | null
  • pricenumberRequired

    The base price in dollars. For a sized item, each size's price is added to this.

    Example
    12.5
  • activeboolean | integer

    true (or left out): on the menu. false: hidden. A Unix timestamp: sold out (86'd) until then. 0: sold out until turned back on.

    Examples
    true 1793142409
  • Limits the item to date windows, in the restaurant's time zone. Both dates are included. Leave it out for an item available every day.

    Example
    [{"start":"2026-11-26","end":"2026-12-31"}]
    • startstringRequired

      First day, YYYY-MM-DD.

      Pattern
      ^\d{4}-\d{2}-\d{2}$
    • endstringRequired

      Last day, YYYY-MM-DD.

      Pattern
      ^\d{4}-\d{2}-\d{2}$
  • tagsstring[]

    Dietary and other badges. Recognized: spicy, specialty, vegan, gf (gluten free), keto, alcoholic, and the upper-case forms HOT, SPICY, SPECIALTY, VEGAN, GLUTEN_FREE. Anything else is ignored, including vegetarian: send vegan.

    Example
    ["spicy","gf"]
  • Image URLs: one string, or an array of strings. Each must be absolute, public and point at an image; Blizzfull downloads them during the import, and a URL that is not an image stops the import.

  • Older spelling of imageURL, used when imageURL is absent.

  • The sizes this item comes in, each with its price for this item. The item's displayed price becomes its cheapest size.

  • The option groups that customize this item, in display order. Send an empty array when there are none.

  • skustring

    Your SKU, kept for loyalty-program matching.

  • Loyalty-program product codes for the item, comma separated.

    Example
    "478730,478734"
  • loyaltyTagsstring[] | string

    Loyalty-program tags for the item: an array, or one comma-separated string.

item_size

object Item size

One size of this item and what it adds to the item's price.

Used by item.sizes

  • ididRequired

    A size from the top-level sizes, or a new size defined here with name.

  • pricenumberRequired

    Dollars added to the item's price for this size. With a base price of 5 and a size price of 1, the size costs 6.

  • namestring

    The size's name, when it is not in the top-level sizes.

size

object Size

A size, priced per item where items attach it.

Used by MenuImport.sizes

  • ididRequired

    Your ID for the record. Must be stable between imports and must not be 0 or empty.

  • namestring
    Example
    "Large 16\""

option_group

object Option group

A set of choices, such as wing flavors or burger toppings. How customers choose depends on type.

Used by MenuImport.option_groups

  • ididRequired

    Your ID for the record. Must be stable between imports and must not be 0 or empty.

  • namestringRequired
  • typestring

    TYPE_SINGLE_SELECT: pick one. TYPE_MULTI_SELECT: pick any. TYPE_UNIT_STEPPER: pick a quantity of each. TYPE_VARIABLE_AMOUNT: pick a level of each (light, regular, extra). When left out, it is inferred: allow_quantity above 0 makes a stepper, force_min and force_max both 1 make a single select, anything else a multi select.

    One of
    "TYPE_SINGLE_SELECT" "TYPE_MULTI_SELECT" "TYPE_UNIT_STEPPER" "TYPE_VARIABLE_AMOUNT"
  • Used only to infer type when it is absent: above 0 means a unit stepper.

  • force_minnumber

    Used only to infer type when it is absent. Set limits per item on the group link instead.

  • force_maxnumber

    Used only to infer type when it is absent. Set limits per item on the group link instead.

  • optionsoption[]Required

    The choices, in display order. Send an empty array for a group with none.

option

object Option

One choice in an option group, such as Buffalo or Extra Cheese.

Used by option_group.options

  • ididRequired

    Your ID for the option, unique within its group.

  • namestringRequired
  • pricenumberRequired

    What the option adds, in dollars. May be 0 or negative.

  • Sold out until this Unix time. Leave it out for an available option. Applied when an existing option is updated, not when it is first created.

  • min_unitsinteger

    For a TYPE_UNIT_STEPPER group: the fewest of this option a customer may choose.

  • max_unitsinteger

    For a TYPE_UNIT_STEPPER group: the most of this option a customer may choose.

  • sub_optionsobject[]

    Option groups that open when this option is chosen (choosing Burger opens Cooking temperature). Each group must be in option_groups and also attached through some item's group link options[].sub_options, or it is skipped.

    • ididRequired

      An option group's ID.

  • sortnumberDeprecated

    Ignored: options keep the order they are sent in.

A mom-and-pop should never lose to a chain on anything.

With Blizzfull, it doesn’t have to.

API reference

2,500+ restaurants served24/7 support(213) 529-3956