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

# Create a shelf location

> Adds a shelf location to a store product. The product's first location becomes its primary location; pass `is_primary` to make a later one primary, which demotes the current primary.



## OpenAPI

````yaml /api/openapi.json post /v1/store-product-placements
openapi: 3.0.0
info:
  title: Vori API
  description: ''
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.vori.com
    description: production
security: []
tags: []
paths:
  /v1/store-product-placements:
    post:
      tags:
        - Product Placements
      summary: Create a shelf location
      description: >-
        Adds a shelf location to a store product. The product's first location
        becomes its primary location; pass `is_primary` to make a later one
        primary, which demotes the current primary.
      operationId: createStoreProductPlacement
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoreProductPlacementRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreProductPlacement'
        '400':
          description: ''
        '403':
          description: ''
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/InsufficientPermissionsError'
                  - $ref: '#/components/schemas/NoBannerAssociationError'
      security:
        - bearer: []
components:
  schemas:
    CreateStoreProductPlacementRequest:
      type: object
      properties:
        aisle:
          type: string
          maxLength: 120
          description: Aisle identifier (e.g. "1", "1A", "Produce").
        is_primary:
          type: boolean
          description: >-
            Whether this is the primary (home) location. The first shelf
            location created for a product becomes primary regardless.
        section:
          type: string
          nullable: true
          maxLength: 120
          description: Bay/section within the aisle (e.g. "Bay 3", "Left").
        shelf:
          type: integer
          nullable: true
          minimum: 0
          description: Shelf level within the section.
        store_id:
          type: string
          description: Store that owns this product.
          pattern: ^[0-9]+$
        store_product_id:
          type: string
          description: Store product to place.
          pattern: ^[0-9]+$
      description: A sales floor location to record for a product at a store.
      required:
        - aisle
        - store_id
        - store_product_id
    StoreProductPlacement:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        aisle:
          type: string
          description: Aisle identifier (e.g. "1", "1A", "Produce").
        banner_id:
          type: string
          description: Banner the shelf location belongs to.
        created_at:
          type: string
          description: When the record was created.
          format: date-time
        created_by_user_id:
          type: string
          nullable: true
          description: >-
            User who created this shelf location; null when an API client
            created it.
        is_primary:
          type: boolean
          description: Whether this is the primary (home) location for the product.
        section:
          type: string
          nullable: true
          description: Bay/section within the aisle (e.g. "Bay 3", "Left").
        shelf:
          type: integer
          nullable: true
          description: Shelf level within the section.
        store_id:
          type: string
          description: Store the shelf location belongs to.
        store_product_id:
          type: string
          description: Store product placed at this location.
        updated_at:
          type: string
          description: When the record was last changed.
          format: date-time
      description: >-
        A shelf location for a product: where it sits on the sales floor — its
        aisle, section, and shelf — and whether that is the primary location for
        the product.
      required:
        - id
        - aisle
        - banner_id
        - created_at
        - created_by_user_id
        - is_primary
        - section
        - shelf
        - store_id
        - store_product_id
        - updated_at
    InsufficientPermissionsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - insufficient_permissions
        error_details:
          $ref: '#/components/schemas/InsufficientPermissionsErrorDetails'
      required:
        - error_code
        - error_details
    NoBannerAssociationError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - no_banner_association
      required:
        - error_code
    InsufficientPermissionsErrorDetails:
      type: object
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Action'
        resource:
          allOf:
            - $ref: '#/components/schemas/Resource'
      required:
        - action
        - resource
    Action:
      type: string
      enum:
        - '*'
        - cancel
        - check_in
        - create
        - delete
        - read
        - read_credentials
        - record_events
        - refund
        - restart
        - update
        - void
    Resource:
      type: string
      enum:
        - '*'
        - accounting_integration
        - agent_chats
        - api_clients
        - asynchronous_tasks
        - banners
        - blackhawk_transactions
        - business_entities
        - capabilities
        - coupons
        - custom_quick_actions
        - datacap_transactions
        - departments
        - discounts
        - ditto_auth_tokens
        - edge_agents
        - electronic_shelf_labels
        - employees
        - feature_orientations
        - files
        - food_modifiers
        - gift_cards
        - gl_code_mappings
        - house_accounts
        - inventory
        - inventory_sessions
        - inventory_settings
        - invoices
        - item_modifiers
        - label_dimension_sets
        - label_sheet_profiles
        - label_stock_products
        - lanes
        - loyalty_bonuses
        - loyalty_campaigns
        - loyalty_rewards
        - notification_templates
        - offers
        - order_guides
        - people
        - pos_banner_configurations
        - pos_orders
        - pos_tills
        - price_tags
        - product_ranges
        - products
        - promotions
        - purchase_orders
        - receiving
        - reporting
        - revision_sessions
        - revisions
        - roles
        - shopper_tags
        - shoppers
        - store_product_inventory_counts
        - store_product_lots
        - store_product_rules
        - store_product_tag_templates
        - store_snap_incentive_program_coupons
        - store_vendor_merge_requests
        - store_vendor_product_merge_requests
        - store_vendor_products
        - store_vendors
        - stores
        - tag_printings
        - tag_template_presets
        - tag_templates
        - tax_rates
        - users
        - variable_weights
        - vendor_merge_requests
        - vendor_product_merge_requests
        - vendors
        - wallet_payments
        - wic_products
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

## Related topics

- [Delete a shelf location](/api-reference/product-placements/delete-a-shelf-location.md)
- [Retrieve a shelf location](/api-reference/product-placements/retrieve-a-shelf-location.md)
- [Update a shelf location](/api-reference/product-placements/update-a-shelf-location.md)
