# OpenSea Developer Documentation Documentation > The largest NFT marketplace. As the leading platform for non-fungible tokens on Ethereum, Polygon, and other blockchains, OpenSea prides itself in offering a first-in-class developer platform consisting of APIs, SDKs, and tutorials. ## Guides - [Deploy an NFT Contract](https://docs.opensea.io/docs/deploy-an-nft-contract.md) - [Part 1: Setup](https://docs.opensea.io/docs/part-1-setup.md) - [Part 2: Deploy a contract using Shipyard](https://docs.opensea.io/docs/part-2-set-up-shipyard.md) - [Part 3: Mint an NFT](https://docs.opensea.io/docs/part-3-add-metadata-to-your-contract.md) - [Display an NFT](https://docs.opensea.io/docs/display-an-nft.md) - [Part 1: Setup](https://docs.opensea.io/docs/part-1-simple-website-setup.md) - [Part 2: Fetch an NFT from OpenSea](https://docs.opensea.io/docs/part-2-fetch-an-nft-from-opensea.md) - [Create a Primary Drop](https://docs.opensea.io/docs/create-a-drop.md): Learn how to deploy a smart contract, configure drop mechanics, and personalize your landing page so that your community can mint your project directly on OpenSea. - [Part 1: Deploy NFT Contract](https://docs.opensea.io/docs/part-1-deploy-a-smart-contract.md) - [Optional: Manually deploying a SeaDrop-compatible contract](https://docs.opensea.io/docs/deploying-a-seadrop-compatible-contract.md) - [Part 2: Edit Collection Settings](https://docs.opensea.io/docs/part-2-edit-collection-settings.md) - [Part 3: Upload Metadata](https://docs.opensea.io/docs/part-3-upload-metadata.md) - [Part 4: Edit Drop Settings](https://docs.opensea.io/docs/part-4-edit-drop-settings.md) - [Part 5: Customize Drop Page](https://docs.opensea.io/docs/part-5-customize-drop-page.md) - [Part 6: Publish your drop](https://docs.opensea.io/docs/part-5-publish-your-drop.md) - [Drops FAQ](https://docs.opensea.io/docs/drops-faq.md) - [Mint from a Drop Programmatically](https://docs.opensea.io/docs/mint-from-a-drop.md): Build a custom mint experience using the OpenSea Drops API. - [Buy and Sell NFTs](https://docs.opensea.io/docs/buy-and-sell-nfts.md): Buy and sell NFTs programmatically using the OpenSea SDK (@opensea/sdk). - [Collection Offers and Advanced Trading](https://docs.opensea.io/docs/collection-offers-and-advanced-trading.md): Use collection offers, trait offers, bulk operations, and advanced order management. - [Transfer and Manage NFTs](https://docs.opensea.io/docs/transfer-and-manage-nfts.md): Programmatically transfer, manage, and validate NFTs using the OpenSea SDK. - [Swap Tokens](https://docs.opensea.io/docs/swap-tokens.md): Build a token swap using the OpenSea API and SDK. - [Search and Discovery](https://docs.opensea.io/docs/search-and-discovery.md): Build search and browse experiences using the OpenSea API and SDK. - [Query Analytics and Events](https://docs.opensea.io/docs/query-analytics-and-events.md): Build dashboards and analytics using OpenSea collection stats, trending data, and historical events. - [Stream Real-Time Events](https://docs.opensea.io/docs/stream-real-time-events.md): Listen to marketplace events in real time using @opensea/stream-js. - [Build with AI Agents](https://docs.opensea.io/docs/build-with-ai-agents.md): Integrate OpenSea data and trading into AI agent workflows using MCP, Agent Skills, the CLI, and the SDK. - [Getting Started: Set Up an Onchain Agent](https://docs.opensea.io/docs/set-up-an-onchain-agent.md): End-to-end guide to launching an AI agent with an LLM, an onchain wallet, and tools from opensea.io/tools. - [Agent Tool Registry (ERC-8257)](https://docs.opensea.io/docs/agent-tool-registry.md): Build, register, and gate AI agent tools onchain using the ERC-8257 Tool Registry. - [x402 Micropayments](https://docs.opensea.io/docs/x402.md): Pay-per-call micropayments for AI agent tools using HTTP 402 and USDC. - [Tool Manifest](https://docs.opensea.io/docs/tool-manifest.md): Full field reference for ERC-8257 tool manifests, including required and optional fields, display images, discovery tags, and examples. - [OpenSea Fees](https://docs.opensea.io/docs/opensea-fees.md) - [Offer Leverage](https://docs.opensea.io/docs/offer-leverage.md) - [Creator Fee Enforcement](https://docs.opensea.io/docs/creator-fee-enforcement.md) - [Metadata Standards](https://docs.opensea.io/docs/metadata-standards.md): How to add rich metadata to your ERC721 or ERC1155 NFTs - [Contract-level metadata](https://docs.opensea.io/docs/contract-level-metadata.md): Customizing the metadata for your smart contract - [Seaport](https://docs.opensea.io/docs/seaport.md): An overview of the Seaport protocol and how it powers OpenSea. - [Models](https://docs.opensea.io/docs/seaport-models.md): This page enumerates the models used within Seaport. - [Interface](https://docs.opensea.io/docs/seaport-interface.md): Method definitions for the Seaport contract - [Enums](https://docs.opensea.io/docs/seaport-enums.md) - [Events and Errors](https://docs.opensea.io/docs/seaport-events-and-errors.md) - [Conduit Controller](https://docs.opensea.io/docs/seaport-conduit-controller.md) - [Seaport Hooks](https://docs.opensea.io/docs/seaport-hooks.md) - [SeaDrop](https://docs.opensea.io/docs/seadrop.md): An overview of the SeaDrop protocol and how it is used for NFT Primary Drops. - [Logos](https://docs.opensea.io/docs/logos.md): These are official OpenSea resources that you can include on your marketing materials, webpage, and/or mobile application. - [Badges](https://docs.opensea.io/docs/badges.md): Establish trust with your users by adding our OpenSea badge on your site. ## API Reference - [Overview](https://docs.opensea.io/reference/api-overview.md) - [Getting Your API Key](https://docs.opensea.io/reference/api-keys.md) - [Authentication](https://docs.opensea.io/reference/auth.md) - [LLMs & Agent Discovery](https://docs.opensea.io/reference/llms-agent-discovery.md): Machine-readable endpoints for AI agents and LLMs to discover and interact with the OpenSea API. - [Data & Discovery](https://docs.opensea.io/reference/data-and-discovery.md) - [Create an instant API key](https://docs.opensea.io/reference/create_instant_api_key.md): Creates a free-tier API key instantly without authentication. The key can be used immediately for all API endpoints. Rate limited to 2 keys per hour per IP. Keys expire after 30 days. - [Get supported chains](https://docs.opensea.io/reference/get_chains.md): Get all supported blockchain chains with metadata including name, native currency symbol, swap support, and block explorer information. - [Get an OpenSea account profile](https://docs.opensea.io/reference/get_account.md): Get an OpenSea Account Profile including details such as bio, social media usernames, and profile image. - [Resolve an account identifier](https://docs.opensea.io/reference/resolve_account.md): Resolve an ENS name (e.g. vitalik.eth), OpenSea username, or wallet address to canonical account info including address, username, and ENS name. The ENS path performs both forward resolution (name → address) and reverse lookup (address → canonical primary name). The address and ENS paths perform enrichment calls (username + ENS reverse lookup) in parallel. The username path only needs an ENS reverse lookup after the initial resolution and runs it sequentially. The ENS and username paths require an extra initial call and may be slower than the address path on cache misses. - [Get portfolio stats for an account](https://docs.opensea.io/reference/get_portfolio_stats.md): Get portfolio analytics including total value, NFT/token breakdown, and P&L for a wallet address over a given timeframe. - [Get portfolio net worth history for an account](https://docs.opensea.io/reference/get_portfolio_history.md): Get net worth time series data for a wallet address over a given timeframe. - [Get offers received by an account](https://docs.opensea.io/reference/get_profile_offers_received.md): Get a paginated list of offers received on items owned by a wallet address. - [Get active offers made by an account](https://docs.opensea.io/reference/get_profile_offers.md): Get a paginated list of active offers made by a wallet address. - [Get active listings for an account](https://docs.opensea.io/reference/get_profile_listings.md): Get a paginated list of active listings created by a wallet address. - [Get collections owned by an account](https://docs.opensea.io/reference/get_profile_collections.md): Get a paginated list of collections owned by a wallet address, with ownership data. - [Get trading P&L for an account](https://docs.opensea.io/reference/get_wallet_pnl.md): Get aggregated realized and unrealized trading profit and loss across all currencies held by a wallet address. Returns 200 with figures (which may be zero for a real but flat wallet) when OpenSea has indexed P&L for the wallet, and 404 only when no P&L has been indexed for it — letting consumers distinguish "indexed but flat" from "not indexed". - [Get token transfers for a wallet's position in a currency](https://docs.opensea.io/reference/get_wallet_token_transfers.md): Get a paginated, transfer-level breakdown of a wallet's position in a single currency (identified by contract_address + chain). Combine `direction` and `transfer_type` to distinguish zero-cost acquisitions (airdrops, CEX transfers) from buys. - [Get closed (realized) trading positions for an account](https://docs.opensea.io/reference/get_wallet_closed_positions.md): Get a paginated, per-trade breakdown of a wallet's realized P&L. Each closed position reflects FIFO (first-in, first-out) cost-basis lot matching. - [Get items favorited by an account](https://docs.opensea.io/reference/get_profile_favorites.md): Get a paginated list of items favorited by a wallet address. Requires wallet identity authentication; the requested address must belong to the authenticated account. - [Claim a profile username](https://docs.opensea.io/reference/claim_profile_username.md): Claim a username for the authenticated wallet. - [Upload a profile image](https://docs.opensea.io/reference/upload_profile_image.md): Set contentType in the context request to the exact MIME type of the image bytes. This response starts a three-step upload flow. First, request this context from OpenSea. Second, call the returned method at the returned URL. For POST, add every fields entry unchanged as a multipart text field, then add a file part containing the bytes. The file part must be last. Let the HTTP library generate the multipart boundary; do not set the overall multipart Content-Type header yourself. POST storage uploads normally return 204. For PUT, upload the raw bytes, use only headers explicitly required by the endpoint, and expect 200. Treat any 2xx storage response as success. The URL and fields are short-lived sensitive credentials. Do not log, persist, alter, or put them in tickets. Third, after storage succeeds, pass the returned token to the documented OpenSea API endpoint. Do not use the token before the storage upload succeeds. Pass the token as the matching profile image field in PATCH /api/v2/profile. - [Update profile settings](https://docs.opensea.io/reference/update_profile_settings.md): Update the authenticated wallet's profile settings. - [Get profile shelves](https://docs.opensea.io/reference/get_profile_shelves.md): Get the shelves for a public wallet address. - [Create a profile shelf](https://docs.opensea.io/reference/create_profile_shelf.md): Create a shelf for the authenticated wallet. - [Reorder profile shelves](https://docs.opensea.io/reference/reorder_profile_shelves.md): Reorder the authenticated wallet's shelves. - [Update a profile shelf](https://docs.opensea.io/reference/update_profile_shelf.md): Update shelf fields and optionally item descriptions. Shelf field updates are applied first; if a later item description update fails, earlier changes are not rolled back. - [Delete a profile shelf](https://docs.opensea.io/reference/delete_profile_shelf.md): Delete the authenticated wallet's shelf. - [Link a wallet to the authenticated account](https://docs.opensea.io/reference/link_wallet_with_siwx.md): Verify control of a wallet using a SIWX signature and link it to the authenticated account. - [Unlink a wallet from the authenticated account](https://docs.opensea.io/reference/unlink_wallet.md): Unlink a wallet from the authenticated account using a scoped wallet token. - [Add a watchlist entry](https://docs.opensea.io/reference/add_watchlist_entry.md): Add an NFT, token, collection, or perpetual to the authenticated account's watchlist. - [Remove a watchlist entry](https://docs.opensea.io/reference/remove_watchlist_entry.md): Remove an NFT, token, collection, or perpetual from the authenticated account's watchlist. - [Get tokens watched by an account](https://docs.opensea.io/reference/get_account_token_watchlist.md): Get the tokens watched by a wallet address. Requires wallet identity authentication; the requested address must belong to the authenticated account. - [Get perpetuals watched by an account](https://docs.opensea.io/reference/get_account_perpetual_watchlist.md): Get the perpetual futures watched by a wallet address. Requires wallet identity authentication; the requested address must belong to the authenticated account. - [Watch a followed profile](https://docs.opensea.io/reference/watch_account.md) - [Stop watching a profile](https://docs.opensea.io/reference/unwatch_account.md) - [Follow a profile](https://docs.opensea.io/reference/follow_account.md) - [Unfollow a profile](https://docs.opensea.io/reference/unfollow_account.md) - [Get the authenticated account's relationship with a profile](https://docs.opensea.io/reference/get_account_relationship.md) - [Get profiles followed](https://docs.opensea.io/reference/get_account_following.md): Returns account targets followed by a username profile. Wallet targets return an empty page because wallet following graphs are not exposed. - [Get profile followers](https://docs.opensea.io/reference/get_account_followers.md) - [Get a single collection](https://docs.opensea.io/reference/get_collection.md): Get a single collection including details such as fees, traits, and links. - [Get multiple collections](https://docs.opensea.io/reference/list_collections.md): Get a list of collections with filters and sorting options. - [Get collection by NFT](https://docs.opensea.io/reference/get_nft_collection.md): Get the collection that an NFT belongs to. This is useful for multi-contract collections like Art Blocks where the item ID disambiguates which collection the NFT belongs to. - [Get collection traits](https://docs.opensea.io/reference/get_collection_traits.md): Get all available traits for a collection with their value counts and data types. - [Get trending collections](https://docs.opensea.io/reference/get_trending_collections.md): Get a list of trending NFT collections sorted by sales activity over a specified timeframe. Trending is determined by sales volume and activity metrics. Available timeframes range from 1 minute to all time. For the one_day timeframe without a chain filter, collections are sorted by a composite trending score; all other timeframes sort by raw sales count. Results are filtered to verified, non-spam, non-NSFW collections with minimum volume thresholds. - [Get top collections](https://docs.opensea.io/reference/get_top_collections.md): Get top NFT collections ranked by various stats (sorted descending). Unlike /trending, results are not filtered by verification status; spam-tagged collections are excluded via trust-safety enforcement states. Available sort options: one_day_volume, seven_days_volume, thirty_days_volume, floor_price, one_day_sales, seven_days_sales, thirty_days_sales, total_volume, total_sales. - [Get collection offer aggregates](https://docs.opensea.io/reference/get_collection_offer_aggregates.md): Get aggregated offer buckets grouped by price level for a collection. - [Get collection holders](https://docs.opensea.io/reference/get_collection_holders.md): Get a paginated list of holders for a collection. - [Get collection floor price history](https://docs.opensea.io/reference/get_collection_floor_prices.md): Get time-series floor price data for a collection. - [Get collections by slugs](https://docs.opensea.io/reference/get_collections_batch.md): Retrieve multiple collections in a single request by providing a list of slugs. Results are returned in the same order as the input slugs. Not-found collections are silently omitted. - [Upload collection image](https://docs.opensea.io/reference/upload_collection_image.md): Set the content_type query parameter to the exact MIME type of the image bytes. This response starts a three-step upload flow. First, request this context from OpenSea. Second, call the returned method at the returned URL. For POST, add every fields entry unchanged as a multipart text field, then add a file part containing the bytes. The file part must be last. Let the HTTP library generate the multipart boundary; do not set the overall multipart Content-Type header yourself. POST storage uploads normally return 204. For PUT, upload the raw bytes, use only headers explicitly required by the endpoint, and expect 200. Treat any 2xx storage response as success. The URL and fields are short-lived sensitive credentials. Do not log, persist, alter, or put them in tickets. Third, after storage succeeds, pass the returned token to the documented OpenSea API endpoint. Do not use the token before the storage upload succeeds. Pass the token as the matching image field in PATCH /api/v2/collections/{slug}. - [Modify collection metadata](https://docs.opensea.io/reference/modify_collection.md): Update an existing collection's metadata. - [Set collection visibility](https://docs.opensea.io/reference/set_collection_visibility.md): Hide or unhide a collection. - [Update collection metadata](https://docs.opensea.io/reference/update_collection_metadata.md): Update collection about, hero, overview, and logo image metadata. - [Get NFT](https://docs.opensea.io/reference/get_nft.md): Get metadata, traits, ownership information, and rarity for a single NFT. - [Get NFT metadata](https://docs.opensea.io/reference/get_nft_metadata.md): Get detailed metadata for an NFT including name, description, image, traits, and external links. - [Get NFTs by collection](https://docs.opensea.io/reference/get_nfts_by_collection.md): Get NFTs in a specific collection. Optionally filter by traits using the 'traits' query parameter with a JSON array of trait filters. Multiple traits are AND-combined (items must match all specified traits). Example: ?traits=[{"traitType":"Background","value":"Red"},{"traitType":"Eyes","value":"Blue"}] - [Get NFTs by account](https://docs.opensea.io/reference/get_nfts_by_account.md): Get all NFTs owned by a specific account on a blockchain, with optional collection filtering. - [Get NFTs by contract](https://docs.opensea.io/reference/get_nfts_by_contract.md): Get all NFTs for a specific contract address on a blockchain. - [Validate NFT metadata](https://docs.opensea.io/reference/validate_nft_metadata.md): Fetch and validate NFT metadata directly from the blockchain without using cached data. Returns both original and processed (SeaDN) URLs to show how the metadata would be ingested. This endpoint does not persist any data. - [Refresh NFT metadata](https://docs.opensea.io/reference/refresh_nft_metadata.md): Queue a metadata refresh for a specific NFT to update its information from the blockchain. - [Transfer NFTs or tokens between wallets](https://docs.opensea.io/reference/transfer_assets.md): Returns ordered blockchain actions to execute for transferring one or more NFTs or tokens from one wallet to another. Supports bulk transfers of multiple assets in a single request. - [Get NFT owners](https://docs.opensea.io/reference/get_nft_owners.md): Get a paginated list of owners for a specific NFT. Particularly useful for ERC-1155 tokens which can have multiple owners. - [Get NFT analytics](https://docs.opensea.io/reference/get_nft_analytics.md): Get analytics data for a specific NFT including sales history and floor price history. - [Get NFTs by identifiers](https://docs.opensea.io/reference/get_nfts_batch.md): Retrieve multiple NFTs in a single request by providing a list of identifiers (chain, contract address, and token ID). Not-found NFTs are silently omitted from the response. - [Get contract](https://docs.opensea.io/reference/get_contract.md): Get contract metadata including collection information, contract standards, and ownership details. - [Get payment token](https://docs.opensea.io/reference/get_payment_token.md): Get a payment token by chain and contract address. - [Get token details](https://docs.opensea.io/reference/get_token.md): Get detailed information about a specific token by chain and contract address. - [Get token balances by account](https://docs.opensea.io/reference/get_token_balances_by_account.md): Get fungible token balances for a specific wallet address. Returns quantity (in display units, not raw/wei), USD value, and token metadata for each token held. - [Get trending tokens](https://docs.opensea.io/reference/get_trending_tokens.md): Get trending tokens based on OpenSea's trending score algorithm. Returns tokens with high momentum including memecoins and newly popular assets. - [Get top tokens](https://docs.opensea.io/reference/get_top_tokens.md): Get top tokens ranked by 24-hour trading volume. Returns established tokens with high market activity. - [Get token groups](https://docs.opensea.io/reference/get_token_groups.md): Get a paginated list of token groups sorted by market cap descending. Token groups represent equivalent currencies across different blockchains (e.g., ETH on Ethereum, Base, and Arbitrum are all in the "eth" token group). - [Get a token group by slug](https://docs.opensea.io/reference/get_token_group.md): Get detailed information about a specific token group by its slug identifier. - [Get token price history](https://docs.opensea.io/reference/get_token_price_history.md): Get historical price data for a specific token. - [Get token OHLCV candles](https://docs.opensea.io/reference/get_token_ohlcv.md): Get OHLCV (Open, High, Low, Close, Volume) candlestick data for a specific token. - [Get token swap activity](https://docs.opensea.io/reference/get_token_activity.md): Get paginated swap activity for a specific token on a given chain. - [Get tokens by contract identifiers](https://docs.opensea.io/reference/get_tokens_batch.md): Retrieve multiple tokens in a single request by providing a list of contract identifiers (chain and address). Not-found tokens are silently omitted from the response. - [Get token liquidity pools](https://docs.opensea.io/reference/get_token_liquidity_pools.md): Get liquidity pools for a specific token. - [Get token holders](https://docs.opensea.io/reference/get_token_holders.md): Get paginated list of holders for a specific token, including quantity held and USD value. - [Get account token activity](https://docs.opensea.io/reference/get_account_token_activity.md): Get paginated fungible token activity (transfers, swaps, wraps, and unwraps) for an account across all chains. Optionally filter by chain, token, and/or activity type. - [Search across OpenSea](https://docs.opensea.io/reference/search.md): Search across collections, tokens, NFTs, and accounts. Results are ranked by relevance. - [[Beta] Get a registered tool](https://docs.opensea.io/reference/get_tool.md): [Beta] Get a registered tool by its composite key: registry chain, registry address, and tool ID. Includes pricing recipients and NFT collection info for gated tools. This endpoint is under active development and may change without notice. - [[Beta] Search registered tools](https://docs.opensea.io/reference/search_tools.md): [Beta] Search for verified registered tools by name, tags, creator, or other criteria. This endpoint is under active development and may change without notice. - [[Beta] List registered tools](https://docs.opensea.io/reference/list_tools.md): [Beta] List verified registered tools with optional sorting and filtering. This endpoint is under active development and may change without notice. - [[Beta] Report tool usage (metrics only)](https://docs.opensea.io/reference/report_tool_usage.md): [Beta] Report verified tool usage for metrics and analytics purposes only. Supports verification_type: eip3009_authorization (free tools, identity proof) or x402_settlement (paid tools, onchain USDC payment verification). Identify the tool by providing tool_chain_id + tool_registry_address (an onchain EVM address, or x402_bazaar / x402_bankr for x402 tools) + tool_onchain_id, or alternatively just tool_endpoint (the tool's canonical URL). This endpoint does NOT trigger any onchain transactions. This endpoint is under active development and may change without notice. - [[Beta] Get activity for a registered tool](https://docs.opensea.io/reference/get_tool_activity.md): [Beta] Returns merged x402 payment events and usage reports for a tool, deduplicated by transaction hash. Each event includes an attribution field indicating confidence level. This endpoint is under active development and may change without notice. - [[Beta] List saved tools](https://docs.opensea.io/reference/list_saved_tools.md): List tools saved by the authenticated account. - [[Beta] Save a tool](https://docs.opensea.io/reference/save_tool.md): Save a registered tool for the authenticated account. - [[Beta] Remove a saved tool](https://docs.opensea.io/reference/unsave_tool.md): Idempotently remove a registered tool from the authenticated account's saved tools. Removed is false when the tool was already absent. - [Marketplace & Trading](https://docs.opensea.io/reference/marketplace-and-trading.md) - [Create a listing](https://docs.opensea.io/reference/post_listing.md): List a single NFT (ERC721 or ERC1155) for sale on the OpenSea marketplace. - [Fulfill a listing](https://docs.opensea.io/reference/generate_listing_fulfillment_data_v2.md): Retrieve all the information, including signatures, needed to fulfill a listing directly onchain. - [Fulfill a listing using a different token](https://docs.opensea.io/reference/generate_cross_chain_listing_fulfillment_data.md): Get fulfillment data to buy one or more listings using a token on a different chain or a different token on the same chain. Supports cross-chain purchases and same-chain token swaps via the Relay protocol. Returns an ordered list of transactions to execute. - [Get best listing by NFT](https://docs.opensea.io/reference/get_best_listing_nft.md): Get the best listing for an NFT. - [Get best listings by collection](https://docs.opensea.io/reference/get_best_listings_collection.md): Get the best listings for a collection sorted by price ascending. Optionally filter by item traits using the 'traits' query parameter with a JSON array of trait filters. Multiple traits are AND-combined (items must match all). Note: results are not deduplicated by token ID — if a token has multiple listings, each listing is returned individually. Filter client-side if you need unique tokens. Example: ?traits=[{"traitType":"Background","value":"Red"}] - [Get all listings by collection](https://docs.opensea.io/reference/list_listings_collection_all.md): Get all listings for a collection. - [Sweep buy items from a collection](https://docs.opensea.io/reference/sweep_collection.md): Buy up to N items from a collection using any payment token, including cross-chain. If a requested item becomes unavailable, the system can automatically substitute it with the next cheapest listing from the same collection (enabled by default). Returns an ordered list of transactions to execute. - [Get listing creation actions](https://docs.opensea.io/reference/create_listing_actions.md): Returns the blockchain actions (approvals + Seaport order signing payload) needed to list one or more NFTs. This eliminates the need to construct Seaport orders manually. - [Build a criteria offer](https://docs.opensea.io/reference/build_offer_v2.md): Build a portion of a criteria offer including the consideration item, zone, and zone hash needed to post an offer. For trait offers on supported collections, the identifierOrCriteria in the returned consideration will be '0' (no merkle root computation needed). For other collections, a computed merkle root is returned. When identifierOrCriteria is '0', the encodedTokenIds field is informational only and not required for constructing the onchain order. - [Create a criteria offer](https://docs.opensea.io/reference/post_criteria_offer_v2.md): Create a criteria offer to purchase any NFT in a collection or which matches the specified trait. For trait offers where the Build Offer endpoint returns identifierOrCriteria '0', use that value directly — trait matching is validated server-side at fulfillment time rather than via onchain merkle proof. - [Create an item offer](https://docs.opensea.io/reference/post_offer.md): Create an offer to purchase a single NFT (ERC721 or ERC1155). - [Fulfill an offer](https://docs.opensea.io/reference/generate_offer_fulfillment_data_v2.md): Retrieve all the information, including signatures, needed to fulfill an offer directly onchain. For trait offers with identifierOrCriteria '0', the server validates that the specified token matches the offer's trait criteria before generating fulfillment data. - [Get best offer by NFT](https://docs.opensea.io/reference/get_best_offer_nft.md): Get the best offer for an NFT. - [Get offers by collection](https://docs.opensea.io/reference/get_offers_collection.md): Get collection offers on a collection. - [Get trait offers for a collection](https://docs.opensea.io/reference/get_offers_collection_trait.md): Get trait offers for a collection. Use the `mode` parameter to select the bid category. **Single string trait:** `?mode=STRING&type=Background&value=Red` **Multiple string traits:** `?mode=MULTI&traits=[{"traitType":"Background","value":"Red"},{"traitType":"Eyes","value":"Blue"}]` **Numeric trait range:** `?mode=NUMERIC&type=Level&min_value=1&max_value=10` Omit filter params to discover all bids of that mode (e.g. `?mode=NUMERIC` returns all numeric bids). If `mode` is omitted, the mode is inferred from the params for backward compatibility. - [Get offers by NFT](https://docs.opensea.io/reference/get_offers_nft.md): Get offers for an NFT. - [Get all offers by collection](https://docs.opensea.io/reference/list_offers_collection_all.md): Get all offers for a collection. - [Get an order](https://docs.opensea.io/reference/get_order.md): Get a single order by its order hash. - [Cancel an order](https://docs.opensea.io/reference/cancel_order.md): Offchain cancel a single order, offer or listing, by its order hash when protected by the SignedZone. Protocol and Chain are required to prevent hash collisions. Please note cancellation is only assured if a fulfillment signature was not vended prior to cancellation. - [Get swap quote](https://docs.opensea.io/reference/get_swap_quote.md): Get a quote for swapping tokens, including price details and executable transaction data. - [Execute a token swap](https://docs.opensea.io/reference/post_swap_execute.md): Get executable transactions for token-to-token swaps. Supports same-chain and cross-chain swaps with multiple from/to assets. - [Build mint transaction data for a drop](https://docs.opensea.io/reference/build_drop_mint_transaction.md): Returns ready-to-sign transaction data for minting tokens from a drop. The caller is responsible for signing and submitting the transaction. No wallet authentication is required — only an API key. The minter address in the request body determines who will receive the tokens. Stage selection is handled automatically by the backend — if multiple stages are active, the first eligible stage is used. - [Get drops](https://docs.opensea.io/reference/get_drops.md): Get a list of NFT drops (mints) by type: featured, upcoming, or recently_minted. Results may be fewer than the requested limit due to post-fetch filtering. - [Get drop by collection slug](https://docs.opensea.io/reference/get_drop_by_slug.md): Get detailed drop information for a collection, including stages and supply. - [Build deploy contract transaction data](https://docs.opensea.io/reference/deploy_drop_contract.md): Returns ready-to-sign transaction data for deploying a new NFT drop contract. The caller is responsible for signing and submitting the transaction. - [Get deploy contract receipt](https://docs.opensea.io/reference/get_deploy_contract_receipt.md): Check the status of a contract deployment transaction. Returns the deployment status and, on success, the deployed contract address and linked collection slug. - [Build transaction data for updating a SelfMint drop item](https://docs.opensea.io/reference/update_self_mint_drop_item.md): Returns ready-to-sign onchain transaction data for updating a SelfMint drop item. The caller is responsible for signing and broadcasting the transaction. - [Update drop item](https://docs.opensea.io/reference/update_drop_item.md): Update drop item metadata. - [Update Creator Studio drop edits](https://docs.opensea.io/reference/save_drop_edits.md): Update an existing ERC-721 SeaDrop V1 drop and its stages. - [Save prereveal drop item](https://docs.opensea.io/reference/save_prereveal_drop_item.md): Save prereveal drop item metadata. - [Build transaction data for creating a SelfMint drop item](https://docs.opensea.io/reference/save_self_mint_drop_item.md): Returns ready-to-sign onchain transaction data for creating a SelfMint drop item. The caller is responsible for signing and broadcasting the transaction. - [Upload drop item media](https://docs.opensea.io/reference/upload_drop_item_media.md): This response starts a three-step upload flow. First, request this context from OpenSea. Second, call the returned method at the returned URL. For POST, add every fields entry unchanged as a multipart text field, then add a file part containing the bytes. The file part must be last. Let the HTTP library generate the multipart boundary; do not set the overall multipart Content-Type header yourself. POST storage uploads normally return 204. For PUT, upload the raw bytes, use only headers explicitly required by the endpoint, and expect 200. Treat any 2xx storage response as success. The URL and fields are short-lived sensitive credentials. Do not log, persist, alter, or put them in tickets. Third, after storage succeeds, pass the returned token to the documented OpenSea API endpoint. Do not use the token before the storage upload succeeds. Pass each token as media_token to POST /api/v2/drops/{slug}/items or POST /api/v2/drops/{slug}/prereveal-item, as media_tokens to POST /api/v2/drops/{slug}/items/media/save, or as media_token to PUT /api/v2/drops/{slug}/items/{token_id}. - [Save drop item media](https://docs.opensea.io/reference/save_drop_item_media.md): Persist drop item media references. - [Upload drop allowlist](https://docs.opensea.io/reference/upload_drop_allowlist.md): This response starts a three-step upload flow. First, request this context from OpenSea. Second, call the returned method at the returned URL. For POST, add every fields entry unchanged as a multipart text field, then add a file part containing the bytes. The file part must be last. Let the HTTP library generate the multipart boundary; do not set the overall multipart Content-Type header yourself. POST storage uploads normally return 204. For PUT, upload the raw bytes, use only headers explicitly required by the endpoint, and expect 200. Treat any 2xx storage response as success. The URL and fields are short-lived sensitive credentials. Do not log, persist, alter, or put them in tickets. Third, after storage succeeds, pass the returned token to the documented OpenSea API endpoint. Do not use the token before the storage upload succeeds. Pass the token as allowlist_file_token to POST /api/v2/drops/{slug}/allowlist/validate. - [Validate drop allowlist](https://docs.opensea.io/reference/validate_drop_allowlist.md): Validate an uploaded drop allowlist file token. - [Get drop eligibility for the authenticated wallet](https://docs.opensea.io/reference/get_drop_eligibility.md): Returns per-stage eligibility for the authenticated wallet, including pricing and mint limits. - [Get transaction receipt](https://docs.opensea.io/reference/get_transaction_receipt.md): Get the receipt/status for a submitted transaction. Works for all transaction types including listing fulfillments, cross-chain buys, sweeps, offer fulfillments, and token swaps. Poll this endpoint after submitting transactions to check completion status. - [Analytics & Events](https://docs.opensea.io/reference/analytics-and-events.md) - [Get collection stats](https://docs.opensea.io/reference/get_collection_stats.md): Get comprehensive statistics for a collection including volume, floor price, and trading metrics. - [Get events (by collection)](https://docs.opensea.io/reference/list_events_by_collection.md): Get a list of events for a collection. Optionally filter by traits to only return events for items matching the specified trait criteria. - [Get events](https://docs.opensea.io/reference/list_events.md): Get a list of events, with optional filtering by event type and time range. - [Get events (by NFT)](https://docs.opensea.io/reference/list_events_by_nft.md): Get a list of events for a specific NFT. - [Get events (by account)](https://docs.opensea.io/reference/list_events_by_account.md): Get a list of events for an account. - [Overview](https://docs.opensea.io/reference/sdks-overview.md): Open-source SDKs and tools for building on the OpenSea API. Each package is maintained in its own GitHub repository with full documentation. - [@opensea/sdk](https://docs.opensea.io/reference/opensea-js.md): TypeScript SDK for creating listings, making offers, fulfilling orders, and querying NFT data via the Seaport protocol. Supports both ethers.js and viem. - [@opensea/stream-js](https://docs.opensea.io/reference/stream-js.md): Receive real-time marketplace events over WebSocket using the OpenSea Stream API and @opensea/stream-js SDK. - [@opensea/cli](https://docs.opensea.io/reference/opensea-cli.md): Query the OpenSea API from the command line or programmatically with @opensea/cli. Designed for both AI agents and developers. - [MCP Overview](https://docs.opensea.io/reference/mcp.md): Connect your AI tools to OpenSea using the Model Context Protocol (MCP), an open standard that lets AI assistants interact with NFTs, tokens, and blockchain data across multiple chains. - [Agent Skill](https://docs.opensea.io/reference/agent-skill.md): Enable AI coding assistants to interact with OpenSea using the Agent Skill, a modular knowledge and tooling package for AI agents. ## Pages - [Model Reference](https://docs.opensea.io/model-reference.md) ## Changelog - [New API Endpoints](https://docs.opensea.io/changelog/new-api-endpoints.md) - [Removing deprecated REST API endpoints and response fields](https://docs.opensea.io/changelog/removing-deprecated-rest-api-endpoints-and-response-fields.md) - [OpenSea Fee Update](https://docs.opensea.io/changelog/opensea-fee-update.md) - [Ronin OpenSea Marketplace Fee Update](https://docs.opensea.io/changelog/ronin-opensea-marketplace-fee-update.md) - [Offer Precision Changes](https://docs.opensea.io/changelog/api-changes.md)