OpenSea Account Endpoints API
Account endpoints to retrieve OpenSea account profiles and resolve identifiers
Account endpoints to retrieve OpenSea account profiles and resolve identifiers
openapi: 3.1.0
info:
title: OpenSea Account 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: Account Endpoints
description: Account endpoints to retrieve OpenSea account profiles and resolve identifiers
paths:
/api/v2/accounts/{address_or_username}:
get:
tags:
- Account Endpoints
summary: Get an OpenSea account profile
description: Get an OpenSea Account Profile including details such as bio, social media usernames, and profile image.
operationId: get_account
parameters:
- name: address_or_username
in: path
description: The blockchain address or username of the account to retrieve
required: true
schema:
type: string
example: 0x8ba1f109551bD432803012645Hac136c94C19D6e
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/AccountResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/accounts/resolve/{identifier}:
get:
tags:
- Account Endpoints
summary: Resolve an account identifier
description: 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.
operationId: resolve_account
parameters:
- name: identifier
in: path
description: An ENS name (e.g. vitalik.eth), OpenSea username, or wallet address to resolve
required: true
schema:
type: string
maxLength: 256
minLength: 0
example: vitalik.eth
responses:
'200':
description: Resolved account info
content:
'*/*':
schema:
$ref: '#/components/schemas/AccountResolveResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/portfolio:
get:
tags:
- Account Endpoints
summary: Get portfolio stats for an account
description: Get portfolio analytics including total value, NFT/token breakdown, and P&L for a wallet address over a given timeframe.
operationId: get_portfolio_stats
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: timeframe
in: query
description: 'Timeframe for P&L calculation: HOUR, DAY, WEEK, MONTH'
required: false
schema:
type: string
default: DAY
description: Timeframe for portfolio analytics queries
enum:
- HOUR
- DAY
- WEEK
- MONTH
responses:
'200':
description: Portfolio stats
content:
'*/*':
schema:
$ref: '#/components/schemas/PortfolioStatsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/portfolio/history:
get:
tags:
- Account Endpoints
summary: Get portfolio net worth history for an account
description: Get net worth time series data for a wallet address over a given timeframe.
operationId: get_portfolio_history
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: timeframe
in: query
description: 'Timeframe for history: HOUR, DAY, WEEK, MONTH'
required: false
schema:
type: string
default: DAY
description: Timeframe for portfolio analytics queries
enum:
- HOUR
- DAY
- WEEK
- MONTH
responses:
'200':
description: Portfolio history
content:
'*/*':
schema:
$ref: '#/components/schemas/PortfolioHistoryResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/offers_received:
get:
tags:
- Account Endpoints
summary: Get offers received by an account
description: Get a paginated list of offers received on items owned by a wallet address.
operationId: get_profile_offers_received
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: after
in: query
description: Cursor for pagination
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
default: 50
- name: collection_slugs
in: query
description: Filter by collection slugs
required: false
schema:
type: array
items:
type: string
- name: chains
in: query
description: Filter by chains
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ChainIdentifier'
- name: sort_by
in: query
description: Sort by field
required: false
schema:
type: string
default: START_TIME
enum:
- START_TIME
- TOP_ASSET_OFFER
- name: sort_direction
in: query
description: Sort direction
required: false
schema:
type: string
default: desc
enum:
- asc
- desc
responses:
'200':
description: Offers received for account
content:
'*/*':
schema:
$ref: '#/components/schemas/OffersResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/offers:
get:
tags:
- Account Endpoints
summary: Get active offers made by an account
description: Get a paginated list of active offers made by a wallet address.
operationId: get_profile_offers
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: after
in: query
description: Cursor for pagination
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
default: 50
- name: collection_slugs
in: query
description: Filter by collection slugs
required: false
schema:
type: array
items:
type: string
- name: chains
in: query
description: Filter by chains
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ChainIdentifier'
- name: sort_by
in: query
description: Sort by field
required: false
schema:
type: string
default: START_TIME
enum:
- START_TIME
- END_TIME
- name: sort_direction
in: query
description: Sort direction
required: false
schema:
type: string
default: desc
enum:
- asc
- desc
responses:
'200':
description: Active offers for account
content:
'*/*':
schema:
$ref: '#/components/schemas/OffersResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/listings:
get:
tags:
- Account Endpoints
summary: Get active listings for an account
description: Get a paginated list of active listings created by a wallet address.
operationId: get_profile_listings
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: after
in: query
description: Cursor for pagination
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
default: 50
- name: collection_slugs
in: query
description: Filter by collection slugs
required: false
schema:
type: array
items:
type: string
- name: chains
in: query
description: Filter by chains
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ChainIdentifier'
- name: sort_by
in: query
description: Sort by field
required: false
schema:
type: string
default: START_TIME
enum:
- START_TIME
- END_TIME
- name: sort_direction
in: query
description: Sort direction
required: false
schema:
type: string
default: desc
enum:
- asc
- desc
responses:
'200':
description: Active listings for account
content:
'*/*':
schema:
$ref: '#/components/schemas/ListingsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/favorites:
get:
tags:
- Account Endpoints
summary: Get items favorited by an account
description: Get a paginated list of items favorited by a wallet address.
operationId: get_profile_favorites
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: after
in: query
description: Cursor for pagination
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
default: 50
- name: sort_by
in: query
description: Sort by field
required: false
schema:
type: string
default: CREATED_DATE
enum:
- CREATED_DATE
- PRICE
- RARITY
- LISTING_CREATED_DATE
- LAST_SALE
- name: sort_direction
in: query
description: Sort direction
required: false
schema:
type: string
default: desc
enum:
- asc
- desc
- name: chains
in: query
description: Filter by chains
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ChainIdentifier'
uniqueItems: true
responses:
'200':
description: Favorited items
content:
'*/*':
schema:
$ref: '#/components/schemas/NftListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/account/{address}/collections:
get:
tags:
- Account Endpoints
summary: Get collections owned by an account
description: Get a paginated list of collections owned by a wallet address, with ownership data.
operationId: get_profile_collections
parameters:
- name: address
in: path
description: The wallet address
required: true
schema:
type: string
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
- name: after
in: query
description: Cursor for pagination
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
default: 50
- name: chains
in: query
description: Filter by chains
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ChainIdentifier'
responses:
'200':
description: Collections owned by account
content:
'*/*':
schema:
$ref: '#/components/schemas/ProfileCollectionsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
components:
schemas:
Trait:
type: object
properties:
trait_type:
type: string
display_type:
type: string
max_value:
type: string
value: {}
required:
- trait_type
- value
ListingPrice:
type: object
properties:
current:
$ref: '#/components/schemas/Price'
required:
- current
CollectionInner:
type: object
properties:
slug:
type: string
required:
- slug
PortfolioHistoryResponse:
type: object
description: Net worth time series data
properties:
data_points:
type: array
description: Time series data points
items:
$ref: '#/components/schemas/PortfolioHistoryDataPoint'
timeframe:
type: string
description: The queried timeframe
example: WEEK
required:
- data_points
- timeframe
PortfolioStatsResponse:
type: object
description: Portfolio stats including total value, P&L, and asset breakdown
properties:
total_value_usd:
type: string
description: Total portfolio value in USD
example: 125430.5
nft_value_usd:
type: string
description: NFT portfolio value in USD
example: 98200
token_value_usd:
type: string
description: Token portfolio value in USD
example: 27230.5
pnl_absolute:
type: string
description: Absolute P&L in USD over the timeframe
example: '+1250.00'
pnl_percentage:
type: string
description: Percentage P&L over the timeframe
example: '+1.01'
timeframe:
type: string
description: The queried timeframe
example: WEEK
required:
- nft_value_usd
- timeframe
- token_value_usd
- total_value_usd
AccountResolveResponse:
type: object
description: Resolved account info
properties:
address:
type: string
description: The resolved wallet address
example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
username:
type: string
description: OpenSea username, if available
ens_name:
type: string
description: Primary ENS name, if available
example: vitalik.eth
required:
- address
SocialMediaAccount:
type: object
properties:
platform:
type: string
username:
type: string
required:
- platform
- username
Parameters:
type: object
properties:
offerer:
type: string
offer:
type: array
items:
$ref: '#/components/schemas/Item'
consideration:
type: array
items:
$ref: '#/components/schemas/ConsiderationItem'
startTime:
type: string
endTime:
type: string
orderType:
type: integer
format: int32
zone:
type: string
zoneHash:
type: string
salt:
type: string
conduitKey:
type: string
totalOriginalConsiderationItems:
type: integer
format: int32
counter:
type: integer
required:
- conduitKey
- consideration
- counter
- endTime
- offer
- offerer
- orderType
- salt
- startTime
- totalOriginalConsiderationItems
- zone
- zoneHash
AccountResponse:
type: object
properties:
address:
type: string
username:
type: string
profile_image_url:
type: string
banner_image_url:
type: string
website:
type: string
social_media_accounts:
type: array
items:
$ref: '#/components/schemas/SocialMediaAccount'
bio:
type: string
joined_date:
type: string
format: date-time
required:
- address
- bio
- joined_date
- social_media_accounts
Item:
type: object
properties:
itemType:
type: integer
format: int32
token:
type: string
identifierOrCriteria:
type: string
startAmount:
type: string
endAmount:
type: string
required:
- endAmount
- identifierOrCriteria
- itemType
- startAmount
- token
ListingOrOffer: {}
OrderAsset:
type: object
properties:
identifier:
type: string
contract:
type: string
required:
- contract
NumericTraitData:
type: object
properties:
type:
type: string
min:
type: number
format: float
max:
type: number
format: float
required:
- type
Contract:
type: object
properties:
address:
type: string
chain:
type: string
required:
- address
- chain
Price:
type: object
properties:
currency:
type: string
decimals:
type: integer
format: int32
value:
type: string
required:
- currency
- decimals
- value
ProfileCollectionResponse:
type: object
properties:
collection:
type: string
name:
type: string
description:
type: string
image_url:
type: string
banner_image_url:
type: string
owner:
type: string
safelist_status:
type: string
category:
type: string
is_disabled:
type: boolean
is_nsfw:
type: boolean
trait_offers_enabled:
type: boolean
collection_offers_enabled:
type: boolean
opensea_url:
type: string
project_url:
type: string
wiki_url:
type: string
discord_url:
type: string
telegram_url:
type: string
twitter_username:
type: string
instagram_username:
type: string
contracts:
type: array
items:
$ref: '#/components/schemas/Contract'
item_count:
type: integer
format: int32
total_quantity:
type: integer
format: int32
usd_value:
type: number
format: double
required:
- collection
- collection_offers_enabled
- contracts
- is_disabled
- is_nsfw
- item_count
- name
- opensea_url
- safelist_status
- total_quantity
- trait_offers_enabled
Offer:
allOf:
- $ref: '#/components/schemas/ListingOrOffer'
- type: object
properties:
order_hash:
type: string
chain:
type: string
protocol_data:
$ref: '#/components/schemas/ProtocolData'
protocol_address:
type: string
asset:
$ref: '#/components/schemas/OrderAsset'
remaining_quantity:
type: integer
format: int64
order_created_at:
type: integer
format: int64
criteria:
$ref: '#/components/schemas/Criteria'
price:
$ref: '#/components/schemas/Price'
status:
type: string
enum:
- ACTIVE
- INACTIVE
- FULFILLED
- EXPIRED
- CANCELLED
required:
- chain
- order_hash
- price
- remaining_quantity
- status
Criteria:
type: object
properties:
collection:
$ref: '#/components/schemas/CollectionInner'
contract:
$ref: '#/components/schemas/ContractInner'
traits:
type: array
items:
$ref: '#/components/schemas/TraitData'
numeric_traits:
type: array
items:
$ref: '#/components/schemas/NumericTraitData'
encoded_token_ids:
type: string
NftListResponse:
type: object
properties:
nfts:
type: array
items:
$ref: '#/components/schemas/Nft'
next:
type: string
required:
- nfts
ListingsResponse:
type: object
properties:
listings:
type: array
items:
$ref: '#/components/schemas/Listing'
next:
type: string
required:
- listings
TraitData:
type: object
properties:
type:
type: string
value:
type: string
required:
- type
- value
ProfileCollectionsResponse:
type: object
properties:
collections:
type: array
items:
$ref: '#/components/schemas/ProfileCollectionResponse'
next:
type: string
required:
- collections
ChainIdentifier:
type: string
default: ethereum
description: Blockchain chain identifier. Use the chain slug (e.g., 'ethereum', 'polygon', 'arbitrum', 'optimism', 'base')
enum:
- blast
- base
- ethereum
- zora
- arbitrum
- sei
- avalanche
- polygon
- optimism
- ape_chain
- flow
- b3
- soneium
- ronin
- bera_chain
- solana
- shape
- unichain
- gunzilla
- abstract
- animechain
- hyperevm
- somnia
- monad
- hyperliquid
- megaeth
- ink
example: ethereum
Nft:
type: object
properties:
identifier:
type: string
collection:
type: string
contract:
type: string
token_standard:
type: string
name:
type: string
description:
type: string
image_url:
type: string
display_image_url:
type: string
display_animation_url:
type: string
metadata_url:
type: string
opensea_url:
type: string
updated_at:
type: string
is_disabled:
type: boolean
is_nsfw:
type: boolean
original_image_url:
type: string
original_animation_url:
type: string
traits:
type: array
items:
$ref: '#/components/schemas/Trait'
required:
- collection
- contract
- identifier
- is_disabled
- is_nsfw
- opensea_url
- token_standard
- traits
- updated_at
ConsiderationItem:
type: object
properties:
itemType:
type: integer
format: int32
token:
type: string
identifierOrCriteria:
type: string
startAmount:
type: string
endAmount:
type: string
recipient:
type: string
required:
- endAmount
- identifierOrCriteria
- itemType
- recipient
- startAmount
- token
ContractInner:
type: object
properties:
address:
type: string
required:
- address
PortfolioHistoryDataPoint:
type: object
description: A single net worth data point
properties:
timestamp:
type: string
format: date-time
description: Timestamp of the data point
example: '2026-04-28T00:00:00Z'
value_usd:
type: string
description: Total portfolio value in USD
example: 124180
token_value_usd:
type: string
description: Token value in USD
example: 26000
nft_value_usd:
type: string
description: NFT value in USD
example: 98180
required:
- nft_value_usd
- timestamp
- token_value_usd
- value_usd
ProtocolData:
type: object
properties:
parameters:
$ref: '#/components/schemas/Parameters'
signature:
type: string
required:
- parameters
OffersResponse:
type: object
properties:
offers:
type: array
items:
$ref: '#/components/schemas/Offer'
next:
type: string
required:
- offers
Listing:
allOf:
- $ref: '#/components/schemas/ListingOrOffer'
- type: object
properties:
order_hash:
type: string
chain:
type: string
protocol_data:
$ref: '#/components/schemas/ProtocolData'
protocol_address:
type: string
asset:
$ref: '#/components/schemas/OrderAsset'
remaining_quantity:
type: integer
format: int64
order_created_at:
type: integer
format: int64
price:
$ref: '#/components/schemas/ListingPrice'
type:
type: string
status:
type: string
enum:
- ACTIVE
- INACTIVE
- FULFILLED
- EXPIRED
- CANCELLED
required:
- chain
- order_hash
- price
- remaining_quantity
- status
- type
responses:
NotFound:
description: Resource not found
BadRequest:
description: For error reasons, review the response data.
InternalError:
description: Internal server error. Please open a support ticket so OpenSea can investigate.
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