Releases: ProjectOpenSea/opensea-sdk
Release list
v11.9.0
What's Changed
Stream API client moves into the SDK
The OpenSea Stream API client now ships at the @opensea/sdk/stream subpath, replacing the standalone @opensea/stream-js package. It speaks the Phoenix Channels wire protocol directly rather than depending on phoenix, so the subpath pulls in no third-party runtime code, and neither ethers nor seaport.
Migrating is mostly an import change. See developerDocs/stream-migration.md.
- Node users no longer need
wsornode-localstorage. apiKeyreplacestokeninClientConfig.tokenstill works and is deprecated.- Unsubscribing removes a single handler instead of leaving the whole collection channel. Two subscriptions on one collection previously meant unsubscribing from one silently stopped the other.
engines.nodeis raised to>=22.0.0. Node 20 reached end of life in April 2026.
Correctness fixes
getTraitsno longer camelizes its response. Its keys are the collection's own trait names and values, so afur_colortrait was reported asfurColor, and a collection with bothdark_brownanddarkBrownhad them merged into one entry with a wrong count.parseUnitsaccepts scientific notation from strings.parseUnits("1e-8", 18)previously threw. This affected any caller that stringified an amount first, including the SDK's ownwrapEth,unwrapWeth, and listing/offer price paths.- Private listings reject payment items in different tokens.
constructPrivateListingCounterOrdersummed mixed currencies into one item, so 100 TOKEN_A plus 20 TOKEN_B became 120 TOKEN_A and surfaced as an onchain revert rather than an SDK error.
Repository rename
The public repo is now ProjectOpenSea/opensea-sdk, matching the package name it has shipped as since 9.0.0. repository.url and bugs.url point there. The old URL still redirects. The npm package name is unchanged.
The TypeDoc GitHub Pages site was retired: nothing built it, so it had been serving v8.0.20 docs. Reference documentation lives in developerDocs/api-reference.md.
Community Contributions
getTraitstrait-key camelization fix, thanks @crazywriter1 (opensea-sdk#1989)parseUnitsstring scientific notation fix, thanks @Lesnak1 (opensea-sdk#1990)- Mixed ERC20 payment token rejection in private listings, thanks @MrFaruk0 (opensea-sdk#1991)
Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.8.0...sdk-v11.9.0
v11.8.0
What's Changed
Minor
- Check the payment token before fulfilling an ERC20-denominated listing.
fulfillOrdernow reads the buyer's balance and their allowance for the address Seaport pulls the payment through, and throws an error naming the spender and the exactapproveamount instead of letting the transaction revert with a bare "execution reverted". The spender is the conduit registered forfulfillerConduitKey, or Seaport itself when that key isbytes32(0). Native-priced listings and offer fulfillments are unaffected, and an unreadable response shape or a failed RPC read skips the check rather than blocking the purchase. (#597)
Patch
createListingAndValidateOnchain(),createOfferAndValidateOnchain(),buildListingOrderComponents()andbuildOfferOrderComponents()no longer request an EIP-712 signature. They built the order by running seaport-jsexecuteAllActions(), which signs, then discarded the signature before validating onchain. Callers got a wallet prompt for nothing, and contract accounts that cannot produce an offchain signature could not use the onchain path at all, which is the case it exists for. Token approvals still run and each is confirmed before the order is validated.validateOrderOnchain()takes an optional thirdprotocolAddressargument and rejects an unsupported protocol, matchingapproveOrder()and the fulfillment methods. Requires@opensea/seaport-js4.2.0. (#609)
Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.7.2...sdk-v11.8.0
v11.7.2
What's Changed
Re-release of 11.7.1, which never reached npm: a test added in that version located the OpenAPI spec at a monorepo-only path, so npm test failed on the public mirror and gated the publish. Fixed — the spec now resolves from node_modules/@opensea/api-types, which exists in both layouts.
11.7.1's contents ship here. If you are on 11.7.0, this is the upgrade.
Fixed: wallet-auth writes were corrupting camelCase request bodies
Fetcher.request snake_cases every request body by default, but four wallet-auth endpoints declare camelCase properties in their OpenAPI schemas:
| Method | Behaviour on 11.7.0 |
|---|---|
setProfileNftPfp |
Always failed — contractAddress and tokenId are required |
createProfileImageUpload |
Always failed — imageType and contentType are required |
updateProfileSettings |
Returned 200 but silently discarded displayName, externalUrl, profileImageToken, bannerImageToken (only bio applied) |
cancelOrder |
Silently dropped offererSignature, turning a signed cancel into an unsigned one |
All four now send the body verbatim, the same opt-out the Seaport order and offer helpers already used. Endpoints whose wire format really is snake_case are unchanged.
Added: wallet visibility and agent profile relationships
WalletAuthAPI.makeWalletPrivate(wallet)—PUT /api/v2/accounts/wallets/{wallet}/privateWalletAuthAPI.makeWalletPublic(wallet)—DELETE /api/v2/accounts/wallets/{wallet}/privateWalletAuthAPI.getAgentProfileRelationships(addressOrUsername)—GET /api/v2/accounts/{address_or_username}/agent-relationships- New exported types:
WalletVisibilityResponse,AgentProfileRelationshipsResponse,SvmInstructionAccountResponse,SvmInstructionResponse,SvmTransactionDetailsResponse
Also
Chain.StableChain(chain id 988) added to the SDK and generated chain maps.SwapTransactionResponse.svmis now typed for structured Solana transaction contents. Swap execution remains EVM-only for now.
Full Changelog: v11.7.0...v11.7.2
v11.7.1
What's Changed
Fixed: wallet-auth writes were corrupting camelCase request bodies
Fetcher.request snake_cases every request body by default, but four wallet-auth endpoints declare camelCase properties in their OpenAPI schemas, so they were being sent keys the server doesn't recognise:
| Method | Behaviour on 11.7.0 |
|---|---|
setProfileNftPfp |
Always failed — contractAddress and tokenId are required |
createProfileImageUpload |
Always failed — imageType and contentType are required |
updateProfileSettings |
Returned 200 but silently discarded displayName, externalUrl, profileImageToken, bannerImageToken (only bio applied) |
cancelOrder |
Silently dropped offererSignature, turning a signed cancel into an unsigned one |
All four now send the body verbatim, the same opt-out the Seaport order and offer helpers already used. Endpoints whose wire format really is snake_case are unchanged.
If you called setProfileNftPfp or createProfileImageUpload on 11.7.0, they could not have succeeded — upgrading is required, not optional.
Added: wallet visibility and agent profile relationships
WalletAuthAPI.makeWalletPrivate(wallet)—PUT /api/v2/accounts/wallets/{wallet}/privateWalletAuthAPI.makeWalletPublic(wallet)—DELETE /api/v2/accounts/wallets/{wallet}/privateWalletAuthAPI.getAgentProfileRelationships(addressOrUsername)—GET /api/v2/accounts/{address_or_username}/agent-relationships- New exported types:
WalletVisibilityResponse,AgentProfileRelationshipsResponse,SvmInstructionAccountResponse,SvmInstructionResponse,SvmTransactionDetailsResponse
Also
Chain.StableChain(chain id 988) added to the SDK and generated chain maps.SwapTransactionResponse.svmis now typed for structured Solana transaction contents. Swap execution remains EVM-only for now.
Full Changelog: v11.7.0...v11.7.1
v11.7.0
What's Changed
- Add first-class access to materialized token activity stats with typed window selection and response models.
- Add helpers to read account agent status and mark or clear registered agent wallets.
Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.6.0...sdk-v11.7.0
v11.6.0
What's Changed
- Add typed cross-chain drop mint support with ordered transaction results and receipt polling through
buildCrossChainDropMintTransactionsandgetTransactionReceipt. - Update
@opensea/api-typesto0.8.4.
Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.5.1...sdk-v11.6.0
v11.5.1
What's changed
- Require a collection image MIME type in
walletAuth.createCollectionImageUpload. - Allow
walletAuth.cancelOrdercalls without a body when no offerer signature is required. - Add
walletAuth.setProfileNftPfpandwalletAuth.clearProfileNftPfpfor the NFT profile-picture endpoints.
Full Changelog: v11.5.0...v11.5.1
v11.5.0
What's Changed
- Add typed account token activity support to
TokensAPIandOpenSeaAPI. - Derive token, balance, contract, and search response types from the public OpenAPI schemas, including fields now returned by the live API.
- Add wallet-authenticated social and saved-tools helpers and require explicit scopes for private-key SIWE login.
Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.4.9...sdk-v11.5.0
v11.4.9
What changed
- Use the current SIWE session and scoped-token endpoints for headless wallet authentication.
- Keep PAT creation, listing, rotation, and revocation bound to the revocable SIWE session.
- Exchange PATs for short-lived scoped JWTs while preserving autonomous agent workflows.
- Add saved-tools API types and the
read:toolsandwrite:toolsscope constants.
Full diff: ProjectOpenSea/opensea-devtools@sdk-v11.4.8...sdk-v11.4.9
v11.4.8
What's changed
- Added
read:socialandwrite:socialto the canonical OpenSea scope constants. - Updated
@opensea/api-typesto 0.8.1.
Full changelog: ProjectOpenSea/opensea-devtools@sdk-v11.4.7...sdk-v11.4.8