InviaInvia
App
REST API/Offers

Offers

The offers endpoint surfaces every indexed offer along with its current status. It is the canonical view of the order book.

GET /v1/offers

Query parameters

NameTypeNotes
status"open" | "filled" | "expired"Defaults to open
makerstringBase58 wallet address
tokenMintstringFilter by asset mint
paymentMintstringFilter by payment mint
side"sell" | "buy"
limitnumberMax 200, default 50
offsetnumberDefault 0

Response

{
  "offers": [
    {
      "pda": "5x...",
      "maker": "3p...",
      "tokenMint": "Es9...",
      "paymentMint": "So11...",
      "side": "sell",
      "nonce": "1742...",
      "originalSize": "500000000000",
      "remainingSize": "500000000000",
      "pricePerToken": "10000000000",
      "priceScale": 12,
      "minFill": "50000000000",
      "createdAt": "2026-04-26T14:20:00Z",
      "expiresAt": "2026-05-03T14:20:00Z",
      "status": "open",
      "lastSlot": "458270000",
      "indexedAt": "2026-04-26T14:20:05Z"
    }
  ],
  "limit": 50,
  "offset": 0
}

Example

curl 'https://api.invia.markets/v1/offers?status=open&side=sell&limit=20'

GET /v1/offers/:pda

Returns a single offer row by PDA. 404 if the offer is unknown to the indexer.

curl https://api.invia.markets/v1/offers/5x...

GET /v1/offers/:pda/fills

Returns the per-offer fill history newest-first.

Response

{
  "fills": [
    {
      "signature": "2pwo...",
      "taker": "4o...",
      "fillAmount": "100000000",
      "paymentAmount": "1000000",
      "feeAmount": "2000",
      "blockTime": "2026-04-26T14:30:00Z",
      "slot": "458271000"
    }
  ]
}

fillAmount is in raw token units, paymentAmount and feeAmount are in raw payment-mint units. Decode with fmtTokenAmount or apply the mint's decimals manually.