Dutchie

Dutchie is a cannabis retail technology platform providing point of sale, ecommerce, and payments for dispensaries. Its headless commerce product, Dutchie Plus, exposes a GraphQL API (endpoint https://plus.dutchie.com/plus/2021-07/graphql) that lets developers build fully custom, branded dispensary storefronts against Dutchie's ecommerce backend - querying retailer menus, products, variants, potency, and specials, and driving a stateful cart/checkout that respects cannabis compliance, inventory, taxes, and per-state rules. Requests are GraphQL POST operations authenticated with a per-retailer Bearer API key. Note - Dutchie has announced a 2026 sunset/deprecation of the Plus headless commerce API.

4 APIs 0 Features
CannabisDispensaryRetailEcommercePoint of SaleHeadless CommerceGraphQLMenuCheckout

APIs

Dutchie Plus Retailers API

GraphQL queries for the dispensaries/retailers connected to your Dutchie Plus account - retailer metadata, address, hours, accepted order types (pickup/delivery), and pricing ty...

Dutchie Plus Menu API

The core headless-storefront query. `menu(filter, pagination)` returns a retailer's live product catalog - each Product carries brand, category, strainType, description, image, ...

Dutchie Plus Specials API

GraphQL queries for a retailer's active specials, deals, and promotions - the discount programs surfaced on the menu that produce the special variant prices (specialPriceRec / s...

Dutchie Plus Checkout API

The stateful cart and order lifecycle via GraphQL mutations - `createCheckout`, `addItem`, `updateQuantity`, `removeItem`, and `updateCheckout` (order type / pricing type), plus...

Collections

GraphQL

Dutchie Plus GraphQL API

Dutchie Plus is Dutchie's headless cannabis-commerce API. It lets developers build

GRAPHQL

Pricing Plans

Dutchie Plans Pricing

2 plans

PLANS

Rate Limits

Dutchie Rate Limits

2 limits

RATE LIMITS

FinOps

Resources

🔗
VulnerabilityDisclosure
VulnerabilityDisclosure
🔗
DomainSecurity
DomainSecurity
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

apis.yml Raw ↑
opencollection: 1.0.0
info:
  name: Dutchie Plus GraphQL API
  version: 2021-07
  description: 'Dutchie Plus headless cannabis-commerce GraphQL API. All requests are HTTPS POST of a GraphQL query/variables
    body to https://plus.dutchie.com/plus/2021-07/graphql, authenticated with a per-retailer Bearer API key. [CONFIRMED] operations
    appear in GetDutchie/dutchie-plus-nextjs-example; [MODELED] operations are referenced in Dutchie Plus docs. Note: Dutchie
    has announced a 2026 sunset of the Plus headless commerce API.'
request:
  auth:
    type: bearer
    token: '{{dutchiePlusKey}}'
items:
- info:
    name: Menu & Products
    type: folder
  items:
  - info:
      name: Menu (products) [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"query Menu($category: Category) { menu(filter: { category: $category }, pagination: { limit: 12,
          offset: 0 }) { products { id name description image category strainType brand { name } potencyThc { formatted }
          potencyCbd { formatted } variants { option priceRec priceMed specialPriceRec specialPriceMed } } } }","variables":{"category":"FLOWER"}}'
    docs: Return a page of products for the scoped retailer's menu.
- info:
    name: Retailers
    type: folder
  items:
  - info:
      name: Retailers [MODELED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"query Retailers { retailers { id name slug status offerDelivery offerAnyPickup pricingTypes address
          { line1 city state postalCode } } }","variables":{}}'
    docs: List dispensaries/retailers on the account. Modeled from the 2021-07 schema.
- info:
    name: Specials
    type: folder
  items:
  - info:
      name: Specials [MODELED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"query Specials { specials { id name description type startDate endDate } }","variables":{}}'
    docs: List a retailer's active specials/deals. Modeled from the 2021-07 schema.
- info:
    name: Checkout
    type: folder
  items:
  - info:
      name: Create Checkout [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"mutation CreateCheckout($orderType: OrderType!, $pricingType: PricingType!) { createCheckout(orderType:
          $orderType, pricingType: $pricingType) { id orderType pricingType redirectUrl items { id option quantity } } }","variables":{"orderType":"DELIVERY","pricingType":"RECREATIONAL"}}'
    docs: Create a new checkout for an order type and pricing type.
  - info:
      name: Add Item to Checkout [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"mutation AddItemToCheckout($checkoutId: ID!, $productId: ID!, $quantity: Int!, $option: String!)
          { addItem(checkoutId: $checkoutId, productId: $productId, quantity: $quantity, option: $option) { id items { id
          option quantity product { name } } } }","variables":{"checkoutId":"","productId":"","quantity":1,"option":"3.5g"}}'
    docs: Add a product variant to a checkout.
  - info:
      name: Update Checkout Item Quantity [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"mutation UpdateCheckoutItemQuantity($checkoutId: ID!, $itemId: ID!, $quantity: Int!) { updateQuantity(checkoutId:
          $checkoutId, itemId: $itemId, quantity: $quantity) { id items { id quantity } } }","variables":{"checkoutId":"","itemId":"","quantity":2}}'
    docs: Update the quantity of a checkout line item.
  - info:
      name: Remove Item from Checkout [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"mutation RemoveItemFromCheckout($checkoutId: ID!, $itemId: ID!) { removeItem(checkoutId: $checkoutId,
          itemId: $itemId) { id items { id } } }","variables":{"checkoutId":"","itemId":""}}'
    docs: Remove a line item from a checkout.
  - info:
      name: Update Checkout (order/pricing type) [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"mutation UpdateCheckout($checkoutId: ID!, $orderType: OrderType!, $pricingType: PricingType!) { updateCheckout(checkoutId:
          $checkoutId, orderType: $orderType, pricingType: $pricingType) { id orderType pricingType } }","variables":{"checkoutId":"","orderType":"PICKUP","pricingType":"RECREATIONAL"}}'
    docs: Update a checkout's order type and pricing type.
  - info:
      name: Get Checkout [CONFIRMED]
      type: http
    http:
      method: POST
      url: https://plus.dutchie.com/plus/2021-07/graphql
      headers:
      - name: Content-Type
        value: application/json
      body:
        type: json
        data: '{"query":"query Checkout($id: ID!) { checkout(id: $id) { id orderType pricingType redirectUrl items { id option
          quantity product { name } } } }","variables":{"id":""}}'
    docs: Retrieve an existing checkout by id.
bundled: true