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.
openapi: 3.2.0
info:
title: Leafly Integration Menu API
version: '2.0'
description: Near-real-time menu integration API for keeping a dispensary's Leafly menu in sync with its system of record (POS).
contact:
name: Leafly API Support
email: api-support@leafly.com
url: https://docs.leafly.io/menu-integration-docs/v2.html
servers:
- url: https://api.leafly.com/v2/menu_integration
description: Production
- url: https://api-sandbox.leafly.io/v2/menu_integration
description: Sandbox
security:
- OAuth2ClientCredentials: []
tags:
- name: Menu
paths:
/{menu_integration_key}/menu:
get:
summary: Get Menu
description: Retrieve the current menu Leafly holds for the integration.
operationId: getMenu
parameters:
- $ref: '#/components/parameters/MenuIntegrationKey'
responses:
'200':
description: The current menu.
tags:
- Menu
/{menu_integration_key}/menu/items:
post:
summary: Synchronize Menu
description: Full menu synchronization by id - submit the complete set of items. Full syncs are recommended once per day (or, in an alternate profile, several times per hour).
operationId: syncMenuItems
parameters:
- $ref: '#/components/parameters/MenuIntegrationKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MenuItems'
responses:
'200':
description: Menu accepted for synchronization.
tags:
- Menu
put:
summary: Upsert Menu Items
description: Create or update individual items or batches of items.
operationId: upsertMenuItems
parameters:
- $ref: '#/components/parameters/MenuIntegrationKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MenuItems'
responses:
'200':
description: Items upserted.
tags:
- Menu
delete:
summary: Delete Menu Items
description: Remove items from the Leafly menu.
operationId: deleteMenuItems
parameters:
- $ref: '#/components/parameters/MenuIntegrationKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MenuItems'
responses:
'200':
description: Items deleted.
tags:
- Menu
components:
parameters:
MenuIntegrationKey:
name: menu_integration_key
in: path
required: true
description: Leafly-issued key that scopes the request to a single dispensary integration.
schema:
type: string
schemas:
MenuItem:
type: object
description: A single menu item. Strain and cannabinoid values should be set to null when absent; variants carry the inventory and pricing.
properties:
id:
type: string
description: Stable identifier for the item in the system of record; must be used consistently.
type:
type: string
name:
type: string
strain:
type:
- string
- 'null'
brand:
type: string
description:
type: string
availableForPickup:
type: boolean
imageUrl:
type:
- string
- 'null'
MenuItems:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/MenuItem'
securitySchemes:
OAuth2ClientCredentials:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.leafly.com/oauth/token
scopes: {}