OpenSea Swap Endpoints API
Swap endpoints for getting token swap quotes with executable transaction data
Swap endpoints for getting token swap quotes with executable transaction data
openapi: 3.1.0
info:
title: OpenSea Account Endpoints Swap Endpoints API
description: The API for OpenSea
contact:
name: OpenSea
url: https://www.opensea.io
email: contact@opensea.io
version: 2.0.0
servers:
- url: https://api.opensea.io
description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Swap Endpoints
description: Swap endpoints for getting token swap quotes with executable transaction data
paths:
/api/v2/swap/execute:
post:
tags:
- Swap Endpoints
summary: Execute a token swap
description: Get executable transactions for token-to-token swaps. Supports same-chain and cross-chain swaps with multiple from/to assets.
operationId: post_swap_execute
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SwapExecuteRequest'
required: true
responses:
'200':
description: Swap execution data retrieved successfully
content:
'*/*':
schema:
$ref: '#/components/schemas/SwapExecuteResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/swap/quote:
get:
tags:
- Swap Endpoints
summary: Get swap quote
description: Get a quote for swapping tokens, including price details and executable transaction data.
operationId: get_swap_quote
parameters:
- name: from_chain
in: query
description: Chain of the token to swap from
required: true
schema:
type: string
example: ethereum
- name: from_address
in: query
description: Contract address of the token to swap from
required: true
schema:
type: string
example: '0x0000000000000000000000000000000000000000'
- name: to_chain
in: query
description: Chain of the token to swap to
required: true
schema:
type: string
example: ethereum
- name: to_address
in: query
description: Contract address of the token to swap to
required: true
schema:
type: string
example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
- name: quantity
in: query
description: Amount to swap in the smallest unit of the token (e.g. wei for ETH)
required: true
schema:
type: string
example: 1000000000000000000
- name: address
in: query
description: Wallet address executing the swap
required: true
schema:
type: string
example: '0x1234567890abcdef1234567890abcdef12345678'
- name: slippage
in: query
description: 'Slippage tolerance (0.0 to 0.5, default: 0.01)'
required: false
schema:
type: number
format: double
default: 0.01
example: 0.01
- name: recipient
in: query
description: Recipient address (defaults to sender address)
required: false
schema:
type: string
example: '0x1234567890abcdef1234567890abcdef12345678'
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/SwapQuoteResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
components:
schemas:
SwapExecuteResponse:
type: object
description: Response containing quote details and executable swap transactions
properties:
quote:
$ref: '#/components/schemas/SwapQuoteDetails'
description: Price and fee details for the swap
transactions:
type: array
description: Ordered list of transactions to execute the swap
items:
$ref: '#/components/schemas/SwapTransactionResponse'
required:
- quote
- transactions
SwapAssetInput:
type: object
description: An asset to swap with chain, contract address, and amount
properties:
chain:
type: string
description: Chain slug (e.g. ethereum, base, solana)
example: ethereum
contract:
type: string
description: Contract address of the token
example: '0x0000000000000000000000000000000000000000'
amount:
type: string
description: Amount in the smallest unit of the token (e.g. wei for ETH). Use "0" for to_assets to receive the market rate.
example: 1000000000000000000
required:
- amount
- chain
- contract
SwapRouteErrorResponse:
type: object
description: An error encountered for a specific swap route
properties:
type:
type: string
description: The error type
example: INSUFFICIENT_FUNDS
required:
- type
SwapQuoteResponse:
type: object
description: Swap quote with price details and executable transactions
properties:
quote:
$ref: '#/components/schemas/SwapQuoteDetails'
description: Price and fee details for the swap
transactions:
type: array
description: Transactions to execute the swap
items:
$ref: '#/components/schemas/SwapTransactionResponse'
required:
- quote
- transactions
SwapCostResponse:
type: object
description: A cost component of the swap
properties:
type:
type: string
description: The type of cost
enum:
- GAS
- PROVIDER
- PROTOCOL
- SWAP
- MARKETPLACE
- CREATOR
- MEV_PROTECTION
example: GAS
usd:
type: string
description: Cost amount in USD
example: 0.5
required:
- type
- usd
SwapExecuteRequest:
type: object
description: Request body for executing a token swap
properties:
from_assets:
type: array
description: Tokens to swap from (at least one required)
items:
$ref: '#/components/schemas/SwapAssetInput'
to_assets:
type: array
description: Tokens to swap to (at least one required)
items:
$ref: '#/components/schemas/SwapAssetInput'
address:
type: string
description: Wallet address executing the swap
example: '0x1234567890abcdef1234567890abcdef12345678'
recipient:
type: string
description: Recipient address (defaults to sender address)
slippage_tolerance:
type: number
format: double
description: 'Slippage tolerance as a decimal (0.0 to 0.5, default: 0.01)'
example: 0.01
required:
- address
- from_assets
- to_assets
SwapQuoteDetails:
type: object
description: Price and fee details for a swap quote
properties:
total_price_usd:
type: number
format: double
description: Total value of tokens received in USD
example: 1850.5
total_cost_usd:
type: number
format: double
description: Total cost of tokens sent in USD
example: 1869
slippage_tolerance:
type: number
format: double
description: Slippage tolerance as a decimal (e.g. 0.01 = 1%)
example: 0.01
estimated_duration_ms:
type: integer
format: int64
description: Estimated swap duration in milliseconds
example: 30000
marketplace_fee_bps:
type: integer
format: int32
description: Marketplace fee in basis points
example: 50
price_impact:
$ref: '#/components/schemas/SwapPriceImpact'
description: Price impact of the swap (null if unavailable)
swap_provider:
type: string
description: The swap provider that fulfilled this quote (null if unavailable)
example: RELAY
recommended_slippage:
type: number
format: double
description: Recommended slippage tolerance based on volatility analysis (null if unavailable)
example: 2
costs:
type: array
description: Breakdown of costs for the swap
items:
$ref: '#/components/schemas/SwapCostResponse'
route_errors:
type: array
description: Errors encountered for individual swap routes
items:
$ref: '#/components/schemas/SwapRouteErrorResponse'
required:
- costs
- estimated_duration_ms
- marketplace_fee_bps
- route_errors
- slippage_tolerance
- total_cost_usd
- total_price_usd
SwapPriceImpact:
type: object
description: Price impact of the swap
properties:
usd:
type: string
description: Price impact in USD (negative means user loses value)
example: -1.5
percent:
type: string
description: Price impact as a percentage (negative means user loses value)
example: -0.08
required:
- percent
- usd
SwapTransactionResponse:
type: object
description: A transaction to be submitted onchain to execute a swap
properties:
chain:
type: string
description: The blockchain for this transaction
example: ethereum
to:
type: string
description: The destination address for the transaction
data:
type: string
description: 'The transaction data. For EVM chains: hex-encoded calldata. For SVM chains: comma-separated instructions in programId:data format.'
value:
type: string
description: The native token value to send with the transaction
required:
- chain
- data
responses:
InternalError:
description: Internal server error. Please open a support ticket so OpenSea can investigate.
BadRequest:
description: For error reasons, review the response data.
securitySchemes:
ApiKeyAuth:
type: apiKey
description: API key required for authentication
name: x-api-key
in: header
x-tagGroups:
- name: Data & Discovery
tags:
- Chain Endpoints
- Account Endpoints
- Collection Endpoints
- NFT Endpoints
- Contract Endpoints
- Token Endpoints
- Search Endpoints
- name: Marketplace & Trading
tags:
- Listing Endpoints
- Offer Endpoints
- Order Endpoints
- Swap Endpoints
- Drops Endpoints
- name: Analytics & Events
tags:
- Analytics Endpoints
- name: Tools [Beta]
tags:
- Tool Endpoints [Beta]
- name: Transactions
tags:
- Transaction Endpoints