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

# Buy

> Buy a Based or Cringe position in the specified market

<Note>
  This is a smart contract write function. The curl example shown is for illustration. To call this function, use web3 libraries (ethers.js, viem, web3.py) or JSON-RPC directly.
</Note>


## OpenAPI

````yaml POST /market/{marketAddress}/buy
openapi: 3.0.3
info:
  title: Based Protocol Smart Contracts API
  description: >-
    OpenAPI specification for the Based Protocol - a bidirectional perpetual
    markets platform built for EVM blockchains. The protocol allows users to
    create binary markets where participants can take "Based" (positive) or
    "Cringe" (negative) positions using the Based Market mechanism.
  version: 1.0.0
  license:
    name: LicenseRef-Proprietary
servers:
  - url: https://mainnet.base.org
    description: Base Mainnet (default RPC endpoint)
security: []
tags:
  - name: BasedProtocol
    description: Operations related to the main protocol contract
  - name: BasedMarket
    description: Operations for individual markets
  - name: BasedMarketRouter
    description: Router operations with safety checks and deadline protection
paths:
  /market/{marketAddress}/buy:
    post:
      tags:
        - BasedMarket
      summary: Buy position in market
      description: Buy a Based or Cringe position in the specified market
      operationId: buyPosition
      parameters:
        - name: marketAddress
          in: path
          required: true
          schema:
            type: string
            pattern: ^0x[a-fA-F0-9]{40}$
          description: Address of the market contract
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BuyPositionRequest'
      responses:
        '200':
          description: Position bought successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
        '400':
          description: Invalid request parameters or slippage exceeded
components:
  schemas:
    BuyPositionRequest:
      type: object
      required:
        - beneficiary
        - amount
        - isBased
        - minAmountReceived
      properties:
        beneficiary:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: Address that will receive the position
        amount:
          type: integer
          format: uint64
          minimum: 1
          description: USD amount to buy (settlement token units)
        isBased:
          type: boolean
          description: Whether to buy Based (true) or Cringe (false)
        minAmountReceived:
          type: integer
          format: uint64
          minimum: 0
          description: Minimum position size to receive (slippage protection)
    TransactionResponse:
      type: object
      properties:
        transactionHash:
          type: string
          pattern: ^0x[a-fA-F0-9]{64}$
          description: Transaction hash
        blockNumber:
          type: integer
          format: uint256
          description: Block number where transaction was mined
        gasUsed:
          type: integer
          format: uint256
          description: Amount of gas used
        success:
          type: boolean
          description: Whether transaction was successful

````