> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joinmarkt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a product

> One product with its variants, delivery and display settings.

**Scope:** `product:read`



## OpenAPI

````yaml GET /api/merchant/v1/stores/{storeId}/products/{productId}
openapi: 3.1.0
info:
  title: Join Markt Merchant API
  version: 1.0.0
  description: >-
    Manage your Join Markt store from your own code: products, orders,
    customers, coupons, themes and more.


    Create an API key in **Dashboard → Developers → API keys**, then send it as
    `Authorization: Bearer mk_live_…`. Each key only works on the stores and
    scopes you chose for it.


    Limits: 120 requests per minute per key. Every response is JSON.
  contact:
    name: Join Markt Support
    url: https://joinmarkt.com/contact
servers:
  - url: https://dash.joinmarkt.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Store
    description: Store profile and settings.
  - name: Products
    description: Create, update and delete products, and manage license-key stock.
  - name: Categories
    description: Group products into categories.
  - name: Groups
    description: Bundle several products under one storefront card.
  - name: Orders
    description: Read orders, add notes and mark manual deliveries done.
  - name: Invoices
    description: Read invoices issued for orders.
  - name: Customers
    description: Read customers and adjust their store balance.
  - name: Coupons
    description: Create and manage discount codes.
  - name: Reviews
    description: Read buyer reviews and reply to them.
  - name: Tickets
    description: Support tickets from buyers.
  - name: Analytics
    description: Revenue and traffic numbers.
  - name: Balance & payouts
    description: Seller balance and payout requests.
  - name: Payments
    description: Payment method settings. Secrets are never returned.
  - name: Storefront
    description: Storefront appearance and integrations.
  - name: Themes
    description: Apply catalog themes and edit theme projects.
  - name: Domain
    description: Connect a custom domain.
  - name: Security
    description: Blacklist and anti-fraud settings.
  - name: Notifications
    description: Recent store notifications.
  - name: Discord
    description: Discord bot settings.
  - name: Import
    description: Import products and customers from another platform.
  - name: Webhooks
    description: Get events sent to your own server.
paths:
  /api/merchant/v1/stores/{storeId}/products/{productId}:
    get:
      tags:
        - Products
      summary: Get a product
      description: |-
        One product with its variants, delivery and display settings.

        **Scope:** `product:read`
      operationId: getProductsByProductId
      parameters:
        - $ref: '#/components/parameters/storeId'
        - in: path
          name: productId
          description: >-
            Product id. Accepts the internal id or the public id (for example
            `PRD-…`).
          schema:
            type: string
          required: true
      responses:
        '200':
          description: The product.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              example:
                id: cmvuo0akz000avdese3w5d1ik
                productId: 1792855376
                publicId: PRD-ZUHA-G3H3-72EW-NB8F-QTBQ
                name: Lumen — Digital Products Store Theme
                slug: lumen-digital-products-store-theme
                price: 79.99
                slashedPrice: null
                images:
                  - >-
                    https://cdn.joinmarkt.com/stores/cmvuo0akc0002vdesum2w5xa1/bade/product-cover.webp
                visibility: public
                categoryId: cmvuo0akj0004vdesyct47ira
                groupId: null
                variants: []
                stockAvailable: 120
                storeId: cmvuo0akc0002vdesum2w5xa1
                createdAt: '2026-10-30T07:42:52.307Z'
                updatedAt: '2026-10-30T08:54:14.057Z'
                description: >-
                  <p><strong>A bright, minimal storefront that lets your digital
                  products shine.</strong></p>

                  <p>Lumen is designed around one goal: turning visitors into
                  buyers. …
                deliveryConfig:
                  methods:
                    - license_key
                    - delivery_instructions
                  downloadFiles: []
                  manualDelivery: null
                  deliveryInstructions:
                    content: >-
                      Thank you for buying Lumen — Digital Products Store Theme!


                      1. Your license key is shown above. Keep it safe: it
                      proves your purchase and unlocks free updates.

                      2. Your download link is sent to your email within a few
                      minutes.

                      3. Open the setup guide (PDF) inside the download and
                      follow the steps.


                      Need help? Email buyer@example.com with your order number
                      and license key. We reply within 24 hours.
                  customFields:
                    - id: bade-full_name
                      label: Full name
                      identifier: full_name
                      type: text
                      placeholder: John Smith
                      helpText: The name registered on your license.
                      required: true
                      options: []
                    - id: bade-company
                      label: Company or brand (optional)
                      identifier: company
                      type: text
                      placeholder: Acme Studio
                      helpText: ''
                      required: false
                      options: []
                  instructions: null
                displayConfig:
                  hideStockCount: false
                  liveViewsEnabled: false
                  showViewsCount: false
                  liveSalesEnabled: false
                  showSalesCount: false
                  liveSalesNotifications: false
                  showSalesNotifications: false
                metaTitle: Lumen — Digital Products Store Theme | BADE
                metaDescription: >-
                  Minimal, conversion-focused theme for digital product stores.
                  Responsive, RTL ready, instant download.
                metaImage: >-
                  https://cdn.joinmarkt.com/stores/cmvuo0akc0002vdesum2w5xa1/bade/product-cover.webp
                embedCardType: large
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            curl -X GET
            "https://dash.joinmarkt.com/api/merchant/v1/stores/STORE_ID/products/{productId}"
            \
              -H "Authorization: Bearer $JOIN_MARKT_API_KEY"
        - lang: javascript
          label: JavaScript
          source: >-
            const res = await
            fetch("https://dash.joinmarkt.com/api/merchant/v1/stores/STORE_ID/products/{productId}",
            {
              method: "GET",
              headers: {
                Authorization: `Bearer ${process.env.JOIN_MARKT_API_KEY}`,
              },
            })

            const data = await res.json()
        - lang: python
          label: Python
          source: |-
            import os, requests

            res = requests.get(
                "https://dash.joinmarkt.com/api/merchant/v1/stores/STORE_ID/products/{productId}",
                headers={"Authorization": f"Bearer {os.environ['JOIN_MARKT_API_KEY']}"},
            )
            data = res.json()
components:
  parameters:
    storeId:
      name: storeId
      in: path
      required: true
      description: >-
        Your store id. Find it in Dashboard → Developers, or in `GET /stores`
        with MCP.
      schema:
        type: string
  responses:
    BadRequest:
      description: The request body or a parameter is not valid. `error` names the field.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: The API key is missing, wrong, expired or revoked.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The key is valid but has no access to this store, or lacks the scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Nothing with this id exists in this store.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: More than 120 requests in a minute. Wait and try again.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: What went wrong, in plain words.
          examples:
            - Product not found
        code:
          type: string
          description: Stable error code.
          examples:
            - NOT_FOUND
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: mk_live_…
      description: Your Merchant API key. Create one in Dashboard → Developers → API keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.