---
title: "What PM costs and how it may be bought"
method: GET
path: "/economy/purchase-terms"
tags: ["Economy"]
---

# What PM costs and how it may be bought

`GET /economy/purchase-terms`

## Request

- Base URL: `https://kellian.app/api/v1`
- URL: `https://kellian.app/api/v1/economy/purchase-terms`
- Auth: none required

## Response `200`

Success

- ConsumerEconomyPurchaseTermsResponse
  - `pmPerUsd` number, required
  - `grants` object
    - `signupPm` integer, required
    - `signupPmUnproven` integer, required: DEPRECATED 2026-09-16: always equal to `signupPm`. The grant schedule no longer prices on how an account signed up. Kept only so clients built before that date keep parsing this response; read `signupPm`. Removed once no shipped client requires it.
    - `dailyPm` integer, required
    - `dailyPmUnproven` integer, required: DEPRECATED 2026-09-16: always equal to `dailyPm`. Read `dailyPm`. Removed once no shipped client requires it.
  - `bundles` ConsumerPurchaseBundle[], required
    - `usd` number, required
    - `pm` integer, required
    - `featured` boolean
  - `cryptoMinUsd` number, required
  - `minBuyPm` integer, required: Smallest buy the venue accepts, in whole PM. FLAT and price-independent: the same number at 5c and at 99c, on either outcome, binding your own order and never doubled through a counterparty's leg. It binds the amount as sent, in whichever sizing mode you sent it. Any amount at or above it is valid, down to PM precision — 12.50 and 17.30 are both legal at a minimum of 10. There is no increment or lot size. It is the only taker sizing rule: the per-market minBuyAmount published on the book snapshot is deprecated and unenforced since the 2026-08-31 beacon upgrade.
  - `buyStepPm` integer, required: PRESENTATION ONLY: the spacing of stake presets an interface may offer. NOT a constraint — a buy need not be a multiple of this, and rounding an amount down to it discards value the venue would have accepted. Validate against minBuyPm instead.
  - `rails` ConsumerPurchaseRails
    - `crypto` boolean: DEPRECATED and always false since 2026-09-08: the crypto purchase rail was removed with the play-money ERC-20 it sold, and it cannot return. The field is retained only so clients built before that date, which require the key, keep parsing this response. Do not branch on it; read `card`. It is removed once no shipped client requires it.
    - `card` boolean, required
  - `firstPurchaseBonusBps` integer
  - `firstPurchaseEligible` boolean

## Other responses

- `default`: Error response (RFC 9457 Problem Details for HTTP APIs)

---

[API](https://skmtc.dev/problee/apis/kellian-consumer-api.md) · [All operations](https://skmtc.dev/problee/apis/kellian-consumer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/problee/apis/kellian-consumer-api/revisions/2b8254b0ec57?raw)
