Brooklinen Products API

Product catalog listing and detail.

OpenAPI Specification

brooklinen-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Brooklinen Shopify Storefront JSON Products API
  version: '2026-08-02'
  summary: Read-only JSON endpoints over the Brooklinen Shopify storefront.
  description: 'Unauthenticated, read-only JSON endpoints over the Brooklinen storefront at https://www.brooklinen.com. Brooklinen documents this surface itself, in the "Read-Only Browsing (No Authentication Required)" section of https://www.brooklinen.com/agents.md (mirrored at /llms.txt), for agents that need to read store data without transacting.


    NOT A PROVIDER-PUBLISHED SPEC. Brooklinen publishes no OpenAPI document. This description was generated by the API Evangelist enrichment pipeline from (a) the endpoint list Brooklinen publishes in /agents.md and (b) live probes of each endpoint on 2026-08-02. Every path below returned HTTP 200 when probed and every schema property below was observed in a real response body — nothing here is invented. Per-operation `x-evidence` records the probe. For transactional operations (cart, checkout, order) see the UCP/MCP surface at https://www.brooklinen.com/api/ucp/mcp, described in mcp/brooklinen-mcp.yml.'
  contact:
    name: Brooklinen
    url: https://www.brooklinen.com/pages/contact
  termsOfService: https://www.brooklinen.com/policies/terms-of-service
  x-generated: '2026-08-02'
  x-method: generated
  x-source: https://www.brooklinen.com/agents.md
servers:
- url: https://www.brooklinen.com
  description: Brooklinen production storefront (Shopify)
tags:
- name: Products
  description: Product catalog listing and detail.
paths:
  /products.json:
    get:
      operationId: listProducts
      tags:
      - Products
      summary: List products
      description: Returns the store's published products with their variants, images and options. Paginated with `limit` and `page`.
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: A page of products.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-evidence:
        fetched: '2026-08-02'
        url: https://www.brooklinen.com/products.json?limit=1
        http_status: 200
        content_type: application/json; charset=utf-8
  /products/{handle}.json:
    get:
      operationId: getProduct
      tags:
      - Products
      summary: Get a product by handle
      description: Returns a single published product, addressed by its URL handle.
      parameters:
      - $ref: '#/components/parameters/Handle'
      responses:
        '200':
          description: The product.
          content:
            application/json:
              schema:
                type: object
                required:
                - product
                properties:
                  product:
                    $ref: '#/components/schemas/Product'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-evidence:
        fetched: '2026-08-02'
        url: https://www.brooklinen.com/products/dreamweave-waffle-robe-last-call.json
        http_status: 200
        content_type: application/json; charset=utf-8
components:
  responses:
    NotFound:
      description: The requested resource does not exist.
    RateLimited:
      description: Too many requests. Brooklinen's /agents.md instructs agents to back off on 429 responses.
  schemas:
    Option:
      type: object
      properties:
        name:
          type: string
        position:
          type: integer
        values:
          type: array
          items:
            type: string
    ProductList:
      type: object
      required:
      - products
      properties:
        products:
          type: array
          items:
            $ref: '#/components/schemas/Product'
    Product:
      type: object
      description: A published storefront product. Properties observed in a live /products.json response.
      properties:
        id:
          type: integer
          description: Shopify product identifier.
        title:
          type: string
        handle:
          type: string
          description: URL slug used to address the product.
        body_html:
          type: string
          description: Product description as HTML.
        published_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        vendor:
          type: string
        product_type:
          type: string
        tags:
          type: array
          items:
            type: string
        variants:
          type: array
          items:
            $ref: '#/components/schemas/Variant'
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
    Image:
      type: object
      properties:
        id:
          type: integer
        product_id:
          type: integer
        variant_ids:
          type: array
          items:
            type: integer
        src:
          type: string
          format: uri
        width:
          type: integer
        height:
          type: integer
        position:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Variant:
      type: object
      description: A purchasable variant of a product.
      properties:
        id:
          type: integer
        product_id:
          type: integer
          description: Identifier of the parent product.
        title:
          type: string
        option1:
          type:
          - string
          - 'null'
        option2:
          type:
          - string
          - 'null'
        option3:
          type:
          - string
          - 'null'
        sku:
          type:
          - string
          - 'null'
        price:
          type: string
        compare_at_price:
          type:
          - string
          - 'null'
        available:
          type: boolean
        requires_shipping:
          type: boolean
        taxable:
          type: boolean
        grams:
          type: integer
        position:
          type: integer
        featured_image:
          anyOf:
          - $ref: '#/components/schemas/Image'
          - type: 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  parameters:
    Handle:
      name: handle
      in: path
      required: true
      description: The URL handle of the resource.
      schema:
        type: string
      example: dreamweave-waffle-robe-last-call
    Limit:
      name: limit
      in: query
      required: false
      description: Number of products to return per page.
      schema:
        type: integer
        minimum: 1
      example: 1
    Page:
      name: page
      in: query
      required: false
      description: 1-indexed page number.
      schema:
        type: integer
        minimum: 1
      example: 1