Skip to content

Offers

Offers are direct buy-side bids on a single inscription. The buyer signs an offer PSBT. The seller can accept it as-is, reject it, or counter at a different price. Either side can walk away before settlement.

Reads and writes need a bearer token. Tokens are issued only after verifying a funded payment address. Buyer offer creation is collection-scoped through /collection/:slug/offers/...; existing offer actions remain inscription-scoped because they act on a specific offer id.

This page covers nine flows:

  • Any wallet: read active offers, read offer history.
  • Buyer: create an offer, cancel an offer.
  • Seller: accept an offer, reject an offer, counter an offer.
  • Buyer: accept a counter, reject a counter.
  • You: read your offers across all inscriptions (GET /me/offers).

Offers carry a status and a kind. The full enums:

statusWhen
activeOffer is live and waiting for action.
acceptedTrade settled on-chain.
rejectedCounterparty declined.
cancelledOriginator cancelled.
expiredvalidityHours elapsed without action.
invalidatedLocked PSBT inputs are no longer spendable.
kindWhat it is
buyer_offerA buyer’s bid on an inscription.
seller_counterA seller’s counter on a parent buyer offer.

Returns active offers and counters on the inscription, including counteroffer visibility for your wallet.

NameTypeDescription
idstringThe inscription id.
FieldTypeDescription
inscriptionIdstring
ownerAddressstringCurrent owner address.
topOfferSatsinteger | nullHighest active offer in SATS.
liveOfferCountintegerCount of active offers and counters.
expiringSoonCountintegerCount of offers near expiry.
offersarrayOffer rows.
offers[].idstring (UUID)The offer id.
offers[].parentOfferIdstring (UUID) | nullSet when kind is seller_counter.
offers[].kindstringbuyer_offer or seller_counter.
offers[].statusstringSee status table above.
offers[].inscriptionIdstring
offers[].buyerAddressstring
offers[].sellerAddressstring
offers[].createdAtISO datetime
offers[].expiresAtISO datetime
offers[].acceptedAtstring | null
offers[].rejectedAtstring | null
offers[].cancelledAtstring | null
offers[].floorSatsinteger | nullFloor for the inscription’s collection at offer time.
offers[].topOfferSatsinteger | nullTop offer at offer time.
offers[].settlementTxidstring | nullSet after acceptance.
offers[].priceSatsintegerOffer price.
offers[].inscriptionUtxoValueSatsintegerDust-paying value carried by the inscription UTXO.
offers[].sellerMarketplaceFeeBpsinteger
offers[].sellerMarketplaceFeeSatsinteger
offers[].buyerMarketplaceFeeBpsinteger
offers[].buyerMarketplaceFeeSatsinteger
offers[].sellerCreatorRoyaltyBpsinteger
offers[].sellerCreatorRoyaltySatsinteger
offers[].buyerCreatorRoyaltyBpsinteger
offers[].buyerCreatorRoyaltySatsinteger
offers[].sellerReceiveSatsinteger
offers[].buyerPayTotalSatsinteger
offers[].marketplaceRevenueSatsinteger
offers[].creatorRevenueSatsinteger
{
"inscriptionId": "abc123...i0",
"ownerAddress": "bc1p...",
"topOfferSats": 60000,
"liveOfferCount": 2,
"expiringSoonCount": 0,
"offers": [
{
"id": "11111111-1111-1111-1111-111111111111",
"parentOfferId": null,
"kind": "buyer_offer",
"status": "active",
"inscriptionId": "abc123...i0",
"buyerAddress": "bc1q...",
"sellerAddress": "bc1p...",
"createdAt": "2026-05-08T18:00:00.000Z",
"expiresAt": "2026-05-15T18:00:00.000Z",
"acceptedAt": null,
"rejectedAt": null,
"cancelledAt": null,
"floorSats": 45000,
"topOfferSats": 60000,
"settlementTxid": null,
"priceSats": 50000,
"inscriptionUtxoValueSats": 546,
"sellerMarketplaceFeeBps": 100,
"sellerMarketplaceFeeSats": 500,
"buyerMarketplaceFeeBps": 100,
"buyerMarketplaceFeeSats": 500,
"sellerCreatorRoyaltyBps": 0,
"sellerCreatorRoyaltySats": 0,
"buyerCreatorRoyaltyBps": 100,
"buyerCreatorRoyaltySats": 500,
"sellerReceiveSats": 49500,
"buyerPayTotalSats": 51000,
"marketplaceRevenueSats": 1000,
"creatorRevenueSats": 500
}
]
}

Page-paginated history of offers on the inscription.

NameTypeDefaultDescription
pageinteger0Zero-indexed page. Min 0, max 100. Page size is fixed at 25.
FieldTypeDescription
inscriptionIdstring
offersarraySame shape as the active offers response.
hasMorebooleanMore pages exist.
pageintegerCurrent page.
{
"inscriptionId": "abc123...i0",
"offers": [
{
"id": "22222222-2222-2222-2222-222222222222",
"parentOfferId": null,
"kind": "buyer_offer",
"status": "expired",
"inscriptionId": "abc123...i0",
"buyerAddress": "bc1q...",
"sellerAddress": "bc1p...",
"createdAt": "2026-04-01T12:00:00.000Z",
"expiresAt": "2026-04-08T12:00:00.000Z",
"acceptedAt": null,
"rejectedAt": null,
"cancelledAt": null,
"floorSats": 40000,
"topOfferSats": 50000,
"settlementTxid": null,
"priceSats": 45000,
"inscriptionUtxoValueSats": 546,
"sellerMarketplaceFeeBps": 100,
"sellerMarketplaceFeeSats": 450,
"buyerMarketplaceFeeBps": 100,
"buyerMarketplaceFeeSats": 450,
"sellerCreatorRoyaltyBps": 0,
"sellerCreatorRoyaltySats": 0,
"buyerCreatorRoyaltyBps": 100,
"buyerCreatorRoyaltySats": 450,
"sellerReceiveSats": 44550,
"buyerPayTotalSats": 45900,
"marketplaceRevenueSats": 900,
"creatorRevenueSats": 450
}
],
"hasMore": false,
"page": 0
}

Two calls: preflight to build offer PSBTs, submit to lock them in. The buyer’s PSBT carries payment inputs that release if the seller accepts. Creation is collection-scoped so floor checks use the selected collection. Each create-offer request can include 1 to 20 inscription ids.

FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
paymentPublicKeystringyesHex public key for the payment address.
inscriptionIdsarrayyes1 to 20 inscription ids in this collection. Duplicate ids are rejected.
priceSatsintegeryesOffer price in SATS. Must meet the configured minimum and be a multiple of 1,000 SATS.
validityHoursintegernoOne of 12, 24, 168 (7 days), 720 (30 days), 2160 (90 days). Defaults to 168.
spendableUtxosarrayconditionalUp to 1000 candidate payment UTXOs. Required for API-created or non-Xverse bindings. Xverse bindings may omit it and use wallet-provider UTXO fallback.
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"paymentPublicKey": "abcdef...",
"inscriptionIds": ["abc123...i0"],
"priceSats": 50000,
"validityHours": 168,
"spendableUtxos": [{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }]
}
FieldTypeDescription
selectedPaymentUtxosarrayUTXOs the server chose.
itemsarrayOne preflight item per inscription.
items[].inscriptionIdstring
items[].priceSatsinteger
items[].buyerPayTotalSatsinteger
items[].expectedSettlementTxidstring
items[].stepsarrayOne PSBT step.
{
"selectedPaymentUtxos": [{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }],
"items": [
{
"inscriptionId": "abc123...i0",
"priceSats": 50000,
"buyerPayTotalSats": 51000,
"expectedSettlementTxid": "settle1...",
"steps": [
{
"stepIndex": 0,
"signerAddress": "bc1q...",
"inputsToSign": [{ "address": "bc1q...", "signingIndexes": [0] }],
"psbtBase64": "<base64-psbt>"
}
]
}
]
}

The preflight body, plus signed items:

FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
paymentPublicKeystringyes
inscriptionIdsarrayyesSame 1 to 20 ids as preflight.
priceSatsintegeryesSame as preflight.
validityHoursintegernoSame as preflight. Defaults to 168 when omitted.
selectedPaymentUtxosarrayyes (min 1)The exact UTXOs from preflight.
signedItemsarrayyesOne signed item per preflight item.
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"paymentPublicKey": "abcdef...",
"inscriptionIds": ["abc123...i0"],
"priceSats": 50000,
"validityHours": 168,
"selectedPaymentUtxos": [{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }],
"signedItems": [
{
"inscriptionId": "abc123...i0",
"expectedSettlementTxid": "settle1...",
"signedSteps": [
{
"stepIndex": 0,
"signerAddress": "bc1q...",
"inputsToSign": [{ "address": "bc1q...", "signingIndexes": [0] }],
"psbtBase64": "<signed-base64-psbt>"
}
]
}
]
}
FieldTypeDescription
itemsarrayCreated offer rows.
items[].inscriptionIdstring
items[].offerIdstring (UUID)
items[].statusstringAlways active on success.
statusstringAlways active on success.
{
"items": [
{
"inscriptionId": "abc123...i0",
"offerId": "33333333-3333-3333-3333-333333333333",
"status": "active"
}
],
"status": "active"
}

These calls do not take a PSBT.

  • POST /inscriptions/:id/offers/:offerId/cancel: buyer cancels their own offer.
  • POST /inscriptions/:id/offers/:offerId/reject: seller declines an offer they received.
NameTypeDescription
idstringInscription id.
offerIdstring (UUID)Offer id.
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
{ "walletBindingId": "55555555-5555-5555-5555-555555555555" }
FieldTypeDescription
offerIdstring (UUID)
statusstringcancelled for cancel, rejected for reject.
{ "offerId": "33333333-3333-3333-3333-333333333333", "status": "cancelled" }

Two calls. The seller signs the seller side and the result broadcasts.

POST /inscriptions/:id/offers/:offerId/accept/preflight

Section titled “POST /inscriptions/:id/offers/:offerId/accept/preflight”
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
ordinalsPublicKeystringyesPublic key for the ordinals address.
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"ordinalsPublicKey": "abcdef..."
}
FieldTypeDescription
offerIdstring (UUID)
targetFeeRateSatVbinteger
estimatedNetworkFeeSatsinteger
expectedSettlementTxidstring
expectedPayoutTxidstring | nullA separate payout tx, when one is needed.
stepsarrayOne or two PSBT steps.
steps[].stepIndexinteger0 (and possibly 1).
steps[].signerAddressstring
steps[].inputsToSignarray
steps[].psbtBase64string
{
"offerId": "33333333-3333-3333-3333-333333333333",
"targetFeeRateSatVb": 1,
"estimatedNetworkFeeSats": 220,
"expectedSettlementTxid": "settle1...",
"expectedPayoutTxid": null,
"steps": [
{
"stepIndex": 0,
"signerAddress": "bc1p...",
"inputsToSign": [
{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 131 }
],
"psbtBase64": "<base64-psbt>"
}
]
}

POST /inscriptions/:id/offers/:offerId/accept/submit

Section titled “POST /inscriptions/:id/offers/:offerId/accept/submit”
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
ordinalsPublicKeystringyesSame as preflight.
expectedSettlementTxidstringyesFrom preflight.
expectedPayoutTxidstring | nullyesFrom preflight. May be null.
signedStepsarrayyesWallet-signed steps.
signedSteps[].stepIndexintegeryes
signedSteps[].signerAddressstringyes
signedSteps[].inputsToSignarrayyes
signedSteps[].psbtBase64stringyes
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"ordinalsPublicKey": "abcdef...",
"expectedSettlementTxid": "settle1...",
"expectedPayoutTxid": null,
"signedSteps": [
{
"stepIndex": 0,
"signerAddress": "bc1p...",
"inputsToSign": [
{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 131 }
],
"psbtBase64": "<signed-base64-psbt>"
}
]
}
FieldTypeDescription
offerIdstring (UUID)
settlementTxidstringBroadcast settlement txid.
payoutTxidstring | nullBroadcast payout txid, when applicable.
statusstringAlways accepted on success.
{
"offerId": "33333333-3333-3333-3333-333333333333",
"settlementTxid": "settle1...",
"payoutTxid": null,
"status": "accepted"
}

A counter is the seller’s price on the same inscription. It sits on the offer as a pending counter until the buyer accepts, rejects, or it expires.

The counter PSBT has three steps:

StepSighashPurpose
0DEFAULTTransfer the inscription.
1ALL | ANYONECANPAYSettlement.
2ALL | ANYONECANPAYRecovery.

POST /inscriptions/:id/offers/:offerId/counter/preflight

Section titled “POST /inscriptions/:id/offers/:offerId/counter/preflight”
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
ordinalsPublicKeystringyes
priceSatsintegeryesCounter price in SATS. Must beat the current buyer offer by at least 1,000 SATS and be a multiple of 1,000 SATS.
validityHoursintegernoOne of 12, 24, 168, 720, 2160. Defaults to 168.
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"ordinalsPublicKey": "abcdef...",
"priceSats": 60000,
"validityHours": 24
}
FieldTypeDescription
priceSatsinteger
inscriptionUtxoValueSatsinteger
sellerMarketplaceFeeBpsinteger
sellerMarketplaceFeeSatsinteger
buyerMarketplaceFeeBpsinteger
buyerMarketplaceFeeSatsinteger
sellerCreatorRoyaltyBpsinteger
sellerCreatorRoyaltySatsinteger
buyerCreatorRoyaltyBpsinteger
buyerCreatorRoyaltySatsinteger
sellerReceiveSatsinteger
buyerPayTotalSatsinteger
marketplaceRevenueSatsinteger
creatorRevenueSatsinteger
anchorUtxoIdstring (UUID)Send back at submit.
targetFeeRateSatVbinteger
estimatedNetworkFeeSatsinteger
expectedTransferTxidstring
expectedSettlementTxidstring
stepsarrayThree PSBT steps.
steps[].stepIndexinteger0, 1, or 2.
steps[].signerAddressstring
steps[].inputsToSignarray
steps[].psbtBase64string
{
"priceSats": 60000,
"inscriptionUtxoValueSats": 546,
"sellerMarketplaceFeeBps": 100,
"sellerMarketplaceFeeSats": 600,
"buyerMarketplaceFeeBps": 100,
"buyerMarketplaceFeeSats": 600,
"sellerCreatorRoyaltyBps": 0,
"sellerCreatorRoyaltySats": 0,
"buyerCreatorRoyaltyBps": 100,
"buyerCreatorRoyaltySats": 600,
"sellerReceiveSats": 59400,
"buyerPayTotalSats": 61200,
"marketplaceRevenueSats": 1200,
"creatorRevenueSats": 600,
"anchorUtxoId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"targetFeeRateSatVb": 1,
"estimatedNetworkFeeSats": 330,
"expectedTransferTxid": "transfer1...",
"expectedSettlementTxid": "settle1...",
"steps": [
{ "stepIndex": 0, "signerAddress": "bc1p...", "inputsToSign": [{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 0 }], "psbtBase64": "<base64-psbt>" },
{ "stepIndex": 1, "signerAddress": "bc1p...", "inputsToSign": [{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 129 }], "psbtBase64": "<base64-psbt>" },
{ "stepIndex": 2, "signerAddress": "bc1p...", "inputsToSign": [{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 129 }], "psbtBase64": "<base64-psbt>" }
]
}

POST /inscriptions/:id/offers/:offerId/counter/submit

Section titled “POST /inscriptions/:id/offers/:offerId/counter/submit”
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
ordinalsPublicKeystringyes
priceSatsintegeryesSame as preflight.
validityHoursintegernoSame as preflight. Defaults to 168 when omitted.
anchorUtxoIdstring (UUID)yesFrom preflight.
expectedTransferTxidstringyesFrom preflight.
expectedSettlementTxidstringyesFrom preflight.
signedStepsarrayyesThree wallet-signed steps.
signedSteps[].stepIndexintegeryes
signedSteps[].signerAddressstringyes
signedSteps[].inputsToSignarrayyes
signedSteps[].psbtBase64stringyes
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"ordinalsPublicKey": "abcdef...",
"priceSats": 60000,
"validityHours": 24,
"anchorUtxoId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"expectedTransferTxid": "transfer1...",
"expectedSettlementTxid": "settle1...",
"signedSteps": [
{ "stepIndex": 0, "signerAddress": "bc1p...", "inputsToSign": [{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 0 }], "psbtBase64": "<signed-base64-psbt>" },
{ "stepIndex": 1, "signerAddress": "bc1p...", "inputsToSign": [{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 129 }], "psbtBase64": "<signed-base64-psbt>" },
{ "stepIndex": 2, "signerAddress": "bc1p...", "inputsToSign": [{ "address": "bc1p...", "signingIndexes": [0], "sigHash": 129 }], "psbtBase64": "<signed-base64-psbt>" }
]
}
FieldTypeDescription
offerIdstring (UUID)The new counter offer’s id.
parentOfferIdstring (UUID)The buyer offer this counter is on.
statusstringAlways active on success.
{
"offerId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"parentOfferId": "33333333-3333-3333-3333-333333333333",
"status": "active"
}

POST /inscriptions/:id/offers/:offerId/counter/reject

Section titled “POST /inscriptions/:id/offers/:offerId/counter/reject”

Buyer declines a seller’s counter.

FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
{ "walletBindingId": "55555555-5555-5555-5555-555555555555" }
FieldTypeDescription
offerIdstring (UUID)
statusstringrejected.
{ "offerId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "status": "rejected" }

Two calls. The buyer signs payment inputs and the result broadcasts.

POST /inscriptions/:id/offers/:offerId/counter/accept/preflight

Section titled “POST /inscriptions/:id/offers/:offerId/counter/accept/preflight”
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
paymentPublicKeystringyes
spendableUtxosarrayconditionalUp to 1000 candidate payment UTXOs. Required for API-created or non-Xverse bindings. Xverse bindings may omit it and use wallet-provider UTXO fallback.
spendableUtxos[].txidstringyes
spendableUtxos[].voutintegeryes
spendableUtxos[].valueSatsintegeryes
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"paymentPublicKey": "abcdef...",
"spendableUtxos": [
{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }
]
}
FieldTypeDescription
offerIdstring (UUID)
selectedPaymentUtxosarray
targetFeeRateSatVbinteger
estimatedNetworkFeeSatsinteger
expectedFundingTxidstring
expectedSettlementTxidstring
stepsarrayTwo PSBT steps.
steps[].stepIndexinteger0 or 1.
steps[].signerAddressstring
steps[].inputsToSignarray
steps[].psbtBase64string
{
"offerId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"selectedPaymentUtxos": [
{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }
],
"targetFeeRateSatVb": 1,
"estimatedNetworkFeeSats": 330,
"expectedFundingTxid": "fund1...",
"expectedSettlementTxid": "settle1...",
"steps": [
{ "stepIndex": 0, "signerAddress": "bc1q...", "inputsToSign": [{ "address": "bc1q...", "signingIndexes": [0] }], "psbtBase64": "<base64-psbt>" },
{ "stepIndex": 1, "signerAddress": "bc1q...", "inputsToSign": [{ "address": "bc1q...", "signingIndexes": [0] }], "psbtBase64": "<base64-psbt>" }
]
}

POST /inscriptions/:id/offers/:offerId/counter/accept/submit

Section titled “POST /inscriptions/:id/offers/:offerId/counter/accept/submit”
FieldTypeRequiredDescription
walletBindingIdstring (UUID)yes
paymentPublicKeystringyes
spendableUtxosarrayyes (min 1)
spendableUtxos[].txidstringyes
spendableUtxos[].voutintegeryes
spendableUtxos[].valueSatsintegeryes
selectedPaymentUtxosarrayyesThe exact UTXOs from preflight.
expectedFundingTxidstringyesFrom preflight.
expectedSettlementTxidstringyesFrom preflight.
signedStepsarrayyesBoth signed steps.
signedSteps[].stepIndexintegeryes
signedSteps[].signerAddressstringyes
signedSteps[].inputsToSignarrayyes
signedSteps[].psbtBase64stringyes
{
"walletBindingId": "55555555-5555-5555-5555-555555555555",
"paymentPublicKey": "abcdef...",
"spendableUtxos": [
{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }
],
"selectedPaymentUtxos": [
{ "txid": "deadbeef...", "vout": 0, "valueSats": 100000 }
],
"expectedFundingTxid": "fund1...",
"expectedSettlementTxid": "settle1...",
"signedSteps": [
{ "stepIndex": 0, "signerAddress": "bc1q...", "inputsToSign": [{ "address": "bc1q...", "signingIndexes": [0] }], "psbtBase64": "<signed-base64-psbt>" },
{ "stepIndex": 1, "signerAddress": "bc1q...", "inputsToSign": [{ "address": "bc1q...", "signingIndexes": [0] }], "psbtBase64": "<signed-base64-psbt>" }
]
}
FieldTypeDescription
offerIdstring (UUID)
settlementTxidstring
payoutTxidstring | null
statusstringAlways accepted on success.
{
"offerId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"settlementTxid": "settle1...",
"payoutTxid": null,
"status": "accepted"
}

GET /api/v1/me/offers

Cursor-paginated. The shape of 200 depends on view.

NameTypeDefaultDescription
viewstringownedOne of owned, sent, history.
cursorstringOpaque cursor from the previous response.
viewReturns
ownedOffers and counters on inscriptions held by your linked wallets.
sentOffers your linked wallets have sent.
historyPast offer activity for your linked wallets.
FieldTypeDescription
viewstringowned.
groupsarrayOne group per inscription.
groups[].inscriptionIdstring
groups[].inscriptionNumberstring
groups[].inscriptionTitlestring | null
groups[].collectionNamestring | null
groups[].ownerAddressstring
groups[].actionBindingIdstring (UUID) | nullBinding that can act on this group, when any.
groups[].topOfferSatsinteger | null
groups[].activeOfferCountinteger
groups[].activeCounterCountinteger
groups[].earliestExpiresAtISO datetime | null
groups[].offersarrayBuyer offers received on this inscription.
groups[].sentCountersarraySeller counters sent from your linked wallets.
groups[].offers[].idstring (UUID)Offer id.
groups[].offers[].kindstringbuyer_offer or seller_counter.
groups[].offers[].statusstringSee status table.
groups[].offers[].sidestringreceived or sent.
groups[].offers[].actionKindstring | nullAction available to your wallet.
groups[].offers[].buyerAddressstring
groups[].offers[].sellerAddressstring
groups[].offers[].priceSatsinteger
groups[].offers[].createdAtISO datetime
groups[].offers[].expiresAtISO datetime
actionableCountintegerTotal actionable items.
ownedCountintegerCount for owned.
sentCountintegerCount for sent.
hasMoreboolean
nextCursorstring | null
{
"view": "owned",
"groups": [
{
"inscriptionId": "abc123...i0",
"inscriptionNumber": "12345",
"inscriptionTitle": "Inscription 12345",
"collectionName": "Wizards",
"ownerAddress": "bc1p...",
"actionBindingId": "55555555-5555-5555-5555-555555555555",
"topOfferSats": 50000,
"activeOfferCount": 1,
"activeCounterCount": 0,
"earliestExpiresAt": "2026-05-15T18:00:00.000Z",
"offers": [
{
"id": "33333333-3333-3333-3333-333333333333",
"kind": "buyer_offer",
"status": "active",
"side": "received",
"actionKind": "seller_received_buyer_offer",
"buyerAddress": "bc1q...",
"sellerAddress": "bc1p...",
"priceSats": 50000,
"createdAt": "2026-05-08T18:00:00.000Z",
"expiresAt": "2026-05-15T18:00:00.000Z"
}
],
"sentCounters": []
}
],
"actionableCount": 1,
"ownedCount": 1,
"sentCount": 0,
"hasMore": false,
"nextCursor": null
}
FieldTypeDescription
viewstringsent.
rowsarrayOne row per sent offer.
rows[].idstring (UUID)Offer id.
rows[].inscriptionIdstring
rows[].inscriptionNumberstring
rows[].inscriptionTitlestring | null
rows[].collectionNamestring | null
rows[].kindstringbuyer_offer or seller_counter.
rows[].statusstring
rows[].sidestringreceived or sent.
rows[].actionKindstring | nullAction available to your wallet.
rows[].buyerAddressstring
rows[].sellerAddressstring
rows[].priceSatsinteger
rows[].createdAtISO datetime
rows[].expiresAtISO datetime
actionableCountinteger
ownedCountinteger
sentCountinteger
hasMoreboolean
nextCursorstring | null
{
"view": "sent",
"rows": [
{
"id": "33333333-3333-3333-3333-333333333333",
"inscriptionId": "abc123...i0",
"inscriptionNumber": "12345",
"inscriptionTitle": "Inscription 12345",
"collectionName": "Wizards",
"kind": "buyer_offer",
"status": "active",
"side": "sent",
"actionKind": null,
"buyerAddress": "bc1q...",
"sellerAddress": "bc1p...",
"priceSats": 50000,
"createdAt": "2026-05-08T18:00:00.000Z",
"expiresAt": "2026-05-15T18:00:00.000Z"
}
],
"actionableCount": 0,
"ownedCount": 0,
"sentCount": 1,
"hasMore": false,
"nextCursor": null
}
FieldTypeDescription
viewstringhistory.
eventsarrayPast offer events.
events[].eventKeystringStable event key for pagination/rendering.
events[].eventTypestringOne of created, accepted, rejected, cancelled, expired, invalidated.
events[].rolestringbuyer or seller.
events[].offerIdstring (UUID)
events[].parentOfferIdstring (UUID) | null
events[].inscriptionIdstring
events[].inscriptionNumberstring
events[].inscriptionTitlestring | null
events[].kindstringbuyer_offer or seller_counter.
events[].statusstringSee status table.
events[].sidestringreceived or sent.
events[].buyerAddressstring
events[].sellerAddressstring
events[].priceSatsinteger
events[].occurredAtISO datetime
events[].createdAtISO datetime
events[].expiresAtISO datetime
events[].settlementTxidstring | null
events[].payoutTxidstring | null
actionableCountinteger
ownedCountinteger
sentCountinteger
hasMoreboolean
nextCursorstring | null
{
"view": "history",
"events": [
{
"eventKey": "22222222-2222-2222-2222-222222222222:expired",
"eventType": "expired",
"role": "buyer",
"offerId": "22222222-2222-2222-2222-222222222222",
"parentOfferId": null,
"inscriptionId": "abc123...i0",
"inscriptionNumber": "12345",
"inscriptionTitle": "Inscription 12345",
"kind": "buyer_offer",
"status": "expired",
"side": "sent",
"buyerAddress": "bc1q...",
"sellerAddress": "bc1p...",
"priceSats": 45000,
"occurredAt": "2026-04-08T12:00:00.000Z",
"createdAt": "2026-04-01T12:00:00.000Z",
"expiresAt": "2026-04-08T12:00:00.000Z",
"settlementTxid": null,
"payoutTxid": null
}
],
"actionableCount": 0,
"ownedCount": 0,
"sentCount": 0,
"hasMore": false,
"nextCursor": null
}