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

# Query a user's position in this product

> Returns the engine shares owned by `address`, converted to the underlying asset
(`assets`) and to USD (`usd_value`). Use this to render "Your balance" in your UI.

Position is read directly from the chain — no internal cache. ~30s edge cache is safe.

If the wallet has zero shares, the call still returns 200 with `shares: "0"`.




## OpenAPI

````yaml /openapi.yaml get /api/partner/products/{slug}/position
openapi: 3.0.3
info:
  title: Barker Yield Engine API
  version: 1.0.0
  description: >
    Yield-embed API for partners (wallets, payment apps).


    Authentication: `X-Api-Key` header, self-served from portal.barker.money.

    Revenue: 100% via on-chain fee split inside the engine contract — calling
    this API is free.

    Rate limit: 1000 req/min for production keys (`bk_live_*`), 100 req/min for
    sandbox keys (`bk_test_*`). Anti-abuse, not usage billing.


    Two integration modes — same engines, same key, same fee split, different UI
    surface:
      - Embed (iframe): drop-in UI hosted at app.barker.money, no contract calls in your code.
      - Headless API: your UI calls BarkerEngine (ERC-4626) directly with the user's wallet; this API serves metadata, position, fee stats, and webhooks.
    See https://docs.barker.money/integration-modes for the decision guide.


    Error responses share `{ success: false, code, message }`. Full code catalog
    at https://docs.barker.money/error-codes.
  contact:
    name: Barker
    url: https://docs.barker.money
servers:
  - url: https://api.barker.money
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: products
    description: Partner products (engines) — read access
  - name: position
    description: User position queries
  - name: webhooks
    description: Event subscriptions and callbacks
paths:
  /api/partner/products/{slug}/position:
    get:
      tags:
        - position
      summary: Query a user's position in this product
      description: >
        Returns the engine shares owned by `address`, converted to the
        underlying asset

        (`assets`) and to USD (`usd_value`). Use this to render "Your balance"
        in your UI.


        Position is read directly from the chain — no internal cache. ~30s edge
        cache is safe.


        If the wallet has zero shares, the call still returns 200 with `shares:
        "0"`.
      parameters:
        - $ref: '#/components/parameters/SlugParam'
        - in: query
          name: address
          required: true
          schema:
            type: string
            pattern: ^0x[a-fA-F0-9]{40}$
          description: Wallet address (0x-prefixed, 42 chars)
          example: '0x1234567890123456789012345678901234567890'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    $ref: '#/components/schemas/Position'
              example:
                success: true
                data:
                  wallet_address: '0x1234567890123456789012345678901234567890'
                  product_slug: acme-usdc-base
                  shares: '10287.456789012345678901'
                  assets: '10500.123456'
                  usd_value: '10500.12'
        '400':
          description: Malformed wallet address
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    SlugParam:
      in: path
      name: slug
      required: true
      schema:
        type: string
      example: acme-usdc-base
  schemas:
    Position:
      type: object
      properties:
        wallet_address:
          type: string
        product_slug:
          type: string
        shares:
          type: string
        assets:
          type: string
        usd_value:
          type: string
    Error:
      type: object
      required:
        - success
        - message
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          description: Human-readable; wording may change. Do not parse.
        code:
          type: string
          description: >
            Stable machine-readable error code — switch on this in your code.


            Auth & rate-limit: `missing_api_key` · `invalid_api_key` ·
            `revoked_api_key` · `rate_limited`

            Product / slug: `not_found` · `not_owned` · `engine_not_deployed` ·
            `product_paused` · `product_deprecated`

            Position / address: `invalid_address` · `chain_not_supported`

            Yield-calc / fee-stats: `invalid_amount` · `range_too_large` ·
            `invalid_days`

            Webhooks (inbound): `signature_mismatch` · `missing_idempotency_key`
            · `unknown_event` · `idempotency_replay`

            Server: `internal_error` · `chain_rpc_unavailable`


            Full reference: https://docs.barker.money/error-codes
          example: engine_not_deployed
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key

````