Skip to content

Releases: ProjectOpenSea/opensea-sdk

v11.9.0

Choose a tag to compare

@ryanio ryanio released this 14 Aug 17:58

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 ws or node-localstorage.
  • apiKey replaces token in ClientConfig. token still 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.node is raised to >=22.0.0. Node 20 reached end of life in April 2026.

Correctness fixes

  • getTraits no longer camelizes its response. Its keys are the collection's own trait names and values, so a fur_color trait was reported as furColor, and a collection with both dark_brown and darkBrown had them merged into one entry with a wrong count.
  • parseUnits accepts scientific notation from strings. parseUnits("1e-8", 18) previously threw. This affected any caller that stringified an amount first, including the SDK's own wrapEth, unwrapWeth, and listing/offer price paths.
  • Private listings reject payment items in different tokens. constructPrivateListingCounterOrder summed 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

  • getTraits trait-key camelization fix, thanks @crazywriter1 (opensea-sdk#1989)
  • parseUnits string 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

Choose a tag to compare

@ryanio ryanio released this 13 Aug 00:05

What's Changed

Minor

  • Check the payment token before fulfilling an ERC20-denominated listing. fulfillOrder now 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 exact approve amount instead of letting the transaction revert with a bare "execution reverted". The spender is the conduit registered for fulfillerConduitKey, or Seaport itself when that key is bytes32(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() and buildOfferOrderComponents() no longer request an EIP-712 signature. They built the order by running seaport-js executeAllActions(), 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 third protocolAddress argument and rejects an unsupported protocol, matching approveOrder() and the fulfillment methods. Requires @opensea/seaport-js 4.2.0. (#609)

Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.7.2...sdk-v11.8.0

v11.7.2

Choose a tag to compare

@ryanio ryanio released this 03 Aug 17:34

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 failedcontractAddress and tokenId are required
createProfileImageUpload Always failedimageType 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}/private
  • WalletAuthAPI.makeWalletPublic(wallet)DELETE /api/v2/accounts/wallets/{wallet}/private
  • WalletAuthAPI.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.svm is 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

Choose a tag to compare

@ryanio ryanio released this 03 Aug 17:15

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 failedcontractAddress and tokenId are required
createProfileImageUpload Always failedimageType 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}/private
  • WalletAuthAPI.makeWalletPublic(wallet)DELETE /api/v2/accounts/wallets/{wallet}/private
  • WalletAuthAPI.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.svm is 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

Choose a tag to compare

@ryanio ryanio released this 24 Jul 18:18

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

Choose a tag to compare

@ryanio ryanio released this 22 Jul 18:11

What's Changed

  • Add typed cross-chain drop mint support with ordered transaction results and receipt polling through buildCrossChainDropMintTransactions and getTransactionReceipt.
  • Update @opensea/api-types to 0.8.4.

Full Changelog: ProjectOpenSea/opensea-devtools@sdk-v11.5.1...sdk-v11.6.0

v11.5.1

Choose a tag to compare

@ryanio ryanio released this 21 Jul 17:09

What's changed

  • Require a collection image MIME type in walletAuth.createCollectionImageUpload.
  • Allow walletAuth.cancelOrder calls without a body when no offerer signature is required.
  • Add walletAuth.setProfileNftPfp and walletAuth.clearProfileNftPfp for the NFT profile-picture endpoints.

Full Changelog: v11.5.0...v11.5.1

v11.5.0

Choose a tag to compare

@ryanio ryanio released this 20 Jul 22:35

What's Changed

  • Add typed account token activity support to TokensAPI and OpenSeaAPI.
  • 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

Choose a tag to compare

@ryanio ryanio released this 20 Jul 21:14

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:tools and write:tools scope constants.

Full diff: ProjectOpenSea/opensea-devtools@sdk-v11.4.8...sdk-v11.4.9

v11.4.8

Choose a tag to compare

@ryanio ryanio released this 17 Jul 17:35

What's changed

  • Added read:social and write:social to the canonical OpenSea scope constants.
  • Updated @opensea/api-types to 0.8.1.

Full changelog: ProjectOpenSea/opensea-devtools@sdk-v11.4.7...sdk-v11.4.8