> ## 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 position in a market through the router with safety checks and deadline protection

<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 /router/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:
  /router/buy:
    post:
      tags:
        - BasedMarketRouter
      summary: Buy position through router
      description: >-
        Buy a position in a market through the router with safety checks and
        deadline protection
      operationId: routerBuy
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RouterBuyRequest'
      responses:
        '200':
          description: Position bought successfully through router
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
        '400':
          description: Transaction expired, invalid parameters, or slippage exceeded
components:
  schemas:
    RouterBuyRequest:
      type: object
      required:
        - marketAddress
        - amount
        - isBased
        - minAmountReceived
        - deadline
      properties:
        marketAddress:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: Address of the market
        amount:
          type: integer
          format: uint64
          minimum: 1
          description: USD amount to buy
        isBased:
          type: boolean
          description: Whether to buy Based (true) or Cringe (false) position
        minAmountReceived:
          type: integer
          format: uint64
          minimum: 0
          description: Minimum size of position to receive
        deadline:
          type: integer
          format: uint256
          description: Unix timestamp after which transaction will revert
    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

````