openapi: 3.1.0 info: title: Tensor Transaction (TX) API version: '1.0' description: | Server-side transaction construction API that returns base64-encoded unsigned Solana transactions for the Tensor marketplace flows. Clients sign with the user's wallet and submit to a Solana RPC endpoint. Operations cover legacy NFTs, programmable NFTs (pNFT), and Bubblegum compressed NFTs (cNFT). Endpoints encapsulate priority fees, royalty payments, Anchor IDL encoding, escrow operations, and AMM bonding-curve interactions so that callers do not need to construct Solana instructions by hand. All endpoints require an `x-tensor-api-key` header. Request access at https://dev.tensor.trade and follow the Airtable signup flow linked from the Tensor Developer Hub. contact: name: Tensor Developer Hub url: https://dev.tensor.trade servers: - url: https://api.mainnet.tensordev.io description: Mainnet TX construction API security: - ApiKeyAuth: [] tags: - name: Listings - name: Bids - name: Pools - name: Escrow paths: /api/v1/tx/list: get: tags: [Listings] summary: Build List NFT Transaction operationId: buildListTx description: Construct a transaction to list an NFT, pNFT, or cNFT for sale. parameters: - { name: mint, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } - { name: price, in: query, required: true, schema: { type: string, description: 'Price in lamports.' } } - { name: blockhash, in: query, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/edit-listing: get: tags: [Listings] summary: Build Edit Listing Transaction operationId: buildEditListingTx parameters: - { name: mint, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } - { name: price, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/delist: get: tags: [Listings] summary: Build Delist Transaction operationId: buildDelistTx parameters: - { name: mint, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/buy: get: tags: [Listings] summary: Build Buy Transaction operationId: buildBuyTx parameters: - { name: mint, in: query, required: true, schema: { type: string } } - { name: buyer, in: query, required: true, schema: { type: string } } - { name: maxPrice, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/place-collection-bid: get: tags: [Bids] summary: Build Place Collection Bid Transaction operationId: buildPlaceCollectionBidTx parameters: - { name: slug, in: query, required: true, schema: { type: string } } - { name: bidder, in: query, required: true, schema: { type: string } } - { name: price, in: query, required: true, schema: { type: string } } - { name: quantity, in: query, schema: { type: integer, default: 1 } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/place-single-nft-bid: get: tags: [Bids] summary: Build Place Single-NFT Bid Transaction operationId: buildPlaceSingleNftBidTx parameters: - { name: mint, in: query, required: true, schema: { type: string } } - { name: bidder, in: query, required: true, schema: { type: string } } - { name: price, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/place-trait-bid: get: tags: [Bids] summary: Build Place Trait Bid Transaction operationId: buildPlaceTraitBidTx parameters: - { name: slug, in: query, required: true, schema: { type: string } } - { name: bidder, in: query, required: true, schema: { type: string } } - { name: trait, in: query, required: true, schema: { type: string } } - { name: value, in: query, required: true, schema: { type: string } } - { name: price, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/accept-bid: get: tags: [Bids] summary: Build Accept Bid Transaction operationId: buildAcceptBidTx parameters: - { name: bid, in: query, required: true, schema: { type: string } } - { name: mint, in: query, required: true, schema: { type: string } } - { name: seller, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/cancel-bid: get: tags: [Bids] summary: Build Cancel Bid Transaction operationId: buildCancelBidTx parameters: - { name: bid, in: query, required: true, schema: { type: string } } - { name: bidder, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/pool/create: get: tags: [Pools] summary: Build Create Pool Transaction operationId: buildCreatePoolTx description: Open a TensorAMM v2 bonding-curve pool. parameters: - { name: owner, in: query, required: true, schema: { type: string } } - { name: slug, in: query, required: true, schema: { type: string } } - { name: poolType, in: query, required: true, schema: { type: string, enum: [Buy, Sell, TwoSided] } } - { name: curveType, in: query, required: true, schema: { type: string, enum: [Linear, Exponential] } } - { name: startingPrice, in: query, required: true, schema: { type: string } } - { name: delta, in: query, required: true, schema: { type: string } } - { name: mmFeeBps, in: query, schema: { type: integer } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/pool/edit: get: tags: [Pools] summary: Build Edit Pool Transaction operationId: buildEditPoolTx parameters: - { name: pool, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } - { name: startingPrice, in: query, schema: { type: string } } - { name: delta, in: query, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/pool/close: get: tags: [Pools] summary: Build Close Pool Transaction operationId: buildClosePoolTx parameters: - { name: pool, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/pool/deposit: get: tags: [Pools] summary: Build Pool Deposit Transaction operationId: buildPoolDepositTx parameters: - { name: pool, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } - { name: amount, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/pool/withdraw: get: tags: [Pools] summary: Build Pool Withdraw Transaction operationId: buildPoolWithdrawTx parameters: - { name: pool, in: query, required: true, schema: { type: string } } - { name: owner, in: query, required: true, schema: { type: string } } - { name: amount, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/escrow/deposit: get: tags: [Escrow] summary: Build Shared Escrow Deposit Transaction operationId: buildEscrowDepositTx parameters: - { name: owner, in: query, required: true, schema: { type: string } } - { name: amount, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } /api/v1/tx/escrow/withdraw: get: tags: [Escrow] summary: Build Shared Escrow Withdraw Transaction operationId: buildEscrowWithdrawTx parameters: - { name: owner, in: query, required: true, schema: { type: string } } - { name: amount, in: query, required: true, schema: { type: string } } responses: '200': { $ref: '#/components/responses/UnsignedTx' } components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: x-tensor-api-key responses: UnsignedTx: description: Base64-encoded unsigned Solana transaction ready for client-side signing. content: application/json: schema: type: object required: [txs] properties: txs: type: array items: type: object required: [tx] properties: tx: type: string description: Base64-encoded serialized Solana versioned transaction. lastValidBlockHeight: type: integer metadata: type: object additionalProperties: true