Changelog

Firekeeper

Thirdweb Unity SDK v6 – Official Release

Migration Guide

Size & Performance Improvements

  • Reduced dependencies — fewer DLLs, all updated to the latest major versions.
  • Unity package size cut by 40%.
  • Significant performance gains across wallet APIs.
  • Includes all performance upgrades from the .NET SDK v3 release, plus full access to the Thirdweb API wrapper via ThirdwebClient.Api. (See .NET release notes for details.)

Reown AppKit Integration

  • Removed: MetaMaskWallet and WalletConnectWallet.
  • Added: Reown AppKit, the improved successor to WalletConnect.
    • If you rely on external wallets, migrate to AppKit — it’s more stable, faster, and actively maintained.
    • AppKit is optional and not bundled with the SDK. If you call ConnectWallet with WalletProvider.ReownWallet without setting it up, you’ll see descriptive errors guiding you through one-time setup.
    • Check the Migration Guide if you get stuck.

Unified Playground

  • PlaygroundManager has been simplified for readability and ease of use.
  • The sample scene now includes the most common SDK features pre-wired for quick testing.
d0a286328fc7445dbc310a33fd449366

Full Changelog: v5.26.0 → v6.0.0


Thirdweb .NET SDK v3 – Official Release

Why Upgrade to v3

  1. Unified client and APIs
  2. Faster, lighter, and more efficient
  3. Modern dependencies and standards
  4. Easier wallet and transaction testing
  5. Architecture ready for future features

Thirdweb .NET SDK v3 evolves from separate utilities into a cohesive, high-performance platform.

Major Architectural Changes

Unified API Client

// v2 – Separate clients
var nebula = await ThirdwebNebula.Create(client);
var pay = new ThirdwebPay();
var bridge = await ThirdwebBridge.Create(client);
var insight = await ThirdwebInsight.Create(client);
// v3 – Unified client
var response = await client.Api.JustDoItAsync(...);

Highlights

  • Low level generated client for thirdweb API full access, will be kept updated and the time-save will be used to make higher level APIs with nicer DX similar to the remaining ThirdwebWallet, ThirdwebContract and ThirdwebTransaction APIs.
  • Consistent API design
  • Easier discovery via IntelliSense
  • Wraps the thirdweb API with all its features vs waiting for manual higher level integration
  • Wrapper customized and adapted to work across any runtime and extended for game engine use.

Note that the core thirdweb functionality of Wallets, Contracts and Transactions is effectively free of breaking changes (new features are available). In the future, they may call into ThirdwebClient.Api while maintaining the nicer DX. There will eventually be an opinionated easier to use wrapper for each service.


Wallet System Updates

Modernized Wallet Flow

// v2 – Private key wallet
var privateWallet = await PrivateKeyWallet.Generate(client);
// v3 – Guest/in-app wallets
var wallet = await InAppWallet.Create(client, AuthProvider.Guest);
await wallet.LoginWithGuest();

Improvements

  • Removed legacy signing and recovery methods from the IThirdwebWallet interface
  • Removed obsolete LegacyEncryptionKey creaton param from In-App and Ecosystem Wallets.
  • Major internal cleanup of legacy Shamir sharding client side logic and AWS logic.
  • Better guest wallet flows
  • Smarter gas handling and bundler integration

Performance & Dependencies

  • Removed Portable.BouncyCastle and two other Nethereum dependencies.
  • Updated remaining Nethereum dependencies to Nethereum 5.0.0
  • Creating an In-App or Ecosystem wallet should feel a lot faster now.

Efficiency Gains

  • 30% less code (6,997 → 4,886 lines)
  • 41% fewer files (44 → 26)
  • Faster builds and smaller runtime

Developer Experience

Transactions

var hash = await transaction.Send();
var receipt = await transaction.SendAndWaitForTransactionReceipt();

Build System

  • Modernized for faster development and testing
  • If you want to contribute, we have a nice Makefile to help run things more easily

Account Abstraction

  • Unified bundler (ThirdwebBundler)
  • Improved gas estimation and sponsorship
  • Better EIP-7702 support
  • Better zkSync integration

Links

Firekeeper

🍎 Native macOS OAuth Browser Support

✨ New Features

  • Native OAuth Integration: Added support for OAuth (social login) flows on macOS standalone builds using ASWebAuthenticationSession, integrated into the default CrossPlatformUnityBrowser.
  • Universal Binary Support: Ships with an optimized native plugin (libMacBrowser.dylib) containing both ARM64 and x86_64 architecture support.

🔧 Improvements

  • Enhanced Security & UX: OAuth flows now use the system’s native web authentication session for better security, user experience, and compliance with App Store review guidelines.
  • Improved Redirect Handling: Redirects now deeplink back into the app instead of following the Desktop Windows–style flow.
  • Refined Platform Detection: macOS is now properly detected and handled in authentication workflows.
  • Browser Selection Logic: Updated to ensure seamless use of the native macOS session.

📦 What’s Included

  • Native macOS plugin (libMacBrowser.dylib)
  • MacBrowser class implementation
  • Build instructions for compiling the plugin
  • Updated browser selection logic for macOS builds

Note: This functionality only works in builds. In the Unity Editor, the original flow will still open a full browser.


Release: https://github.com/thirdweb-dev/unity/releases/tag/v5.26.0

Yash Kumar

We've redeployed bridge contracts with some updates that affect our Payments, Bridge, and Tokens products.

Users may be prompted to interact with a new contract.

  • Old Contracts: 0xF8Ab2dBE6c43bf1a856471182290f91D621Ba76d, 0x7d34a477e2678c8e19d821eec103d4def4af6f4a
  • New Contract: 0xdA864364f7D1ebCC7C89e9610eBdef45dDf5F81B
  • ZK Contract: 0xC8EF2D40Ef314bb433f86ce2b67bA880BB48771b
Joaquim Verges

We've updated our x402 facilitator and SDK to support any token that supports ERC-2612 permit functionality. Supporting this popular signature standard opens up x402 payments to virtually any ERC20 token.

What's new

  • x402 facilitator and SDK now auto-detects ERC-2612 permit vs ERC-3009 transferWithAuthorization (USDC) and uses the right flow.
  • settlePayment and verifyPayment now accept any arbitrary chain.

Example

Client: pay-gated fetch using x402
auto detects ERC-2612 permit when supported, and signs the payment data accordingly.

import { wrapFetchWithPayment } from "thirdweb/x402";
import { createThirdwebClient } from "thirdweb";
import { createWallet } from "thirdweb/wallets";
const client = createThirdwebClient({ clientId: "your-client-id" });
const wallet = createWallet("io.metamask"); // or any other wallet
await wallet.connect({ client });
const fetchWithPay = wrapFetchWithPayment(fetch, client, wallet);
// Make a request that may require payment
const response = await fetchWithPay(
"https://api.example.com/paid-endpoint",
);

Server: verify and settle via facilitator
When verifying/settling the payment define the price in the ERC20 token of your choice. Here's an example using $higher.

import { createThirdwebClient, toWei } from "thirdweb";
import { facilitator, settlePayment } from "thirdweb/x402";
import { base } from "thirdweb/chains";
const client = createThirdwebClient({
secretKey: process.env.THIRDWEB_SECRET_KEY!,
});
const twFacilitator = facilitator({
client,
serverWalletAddress: "0xServerWalletAddress",
});
// e.g. Next.js Route Handler or middleware
export async function POST(req: Request) {
const method = request.method.toUpperCase();
const resourceUrl = request.nextUrl.toString();
const paymentData = request.headers.get("X-PAYMENT");
const result = await settlePayment({
resourceUrl,
method,
paymentData,
payTo: "0xTreasuryWalletAddress",
network: base, // chain
price: {
amount: toWei("0.01"), // amount in wei
asset: {
address: "0x0578d8A44db98B23BF096A382e016e29a5Ce0ffe", // ERC-20 address
decimals: 18,
eip712: {
name: "Higher", // token's EIP-712 domain name
version: "1", // token's EIP-712 domain version
},
},
},
});
if (result.ok) {
return new Response(
{ message: "Payment successful" },
{ status: 200 },
);
}
return new Response(result.responseBody, {
status: result.status,
headers: result.responseHeaders,
});
}

Learn more

Happy building!

Manan Tank

The BridgeWidget Script makes it easy to embed cross-chain swaps and fiat onramp UI into your app. Just add a script tag to your HTML and get a fully customizable widget — no build setup required.

BridgeWidget UI

Key Features

  • Cross-chain token swaps across 80+ blockchains
  • Fiat onramp support to buy tokens with credit/debit cards
  • Customizable UI — use prebuilt themes or override with your brand colors
  • Prefill token selections for a smoother user experience
  • Display fiat values in multiple currencies
  • Event callbacks to track user actions (success, error, cancel, disconnect)

Example

<!-- Add this script in <head> -->
<script src="https://unpkg.com/thirdweb/dist/scripts/bridge-widget.js"></script>
<!-- Add a container element where you want to render the UI -->
<div id="bridge-widget-container"></div>
<!-- Initialize the widget at the end of <body> -->
<script>
const container = document.querySelector('#bridge-widget-container');
BridgeWidget.render(container, {
clientId: "your-thirdweb-client-id",
theme: "dark",
buy: {
chainId: 8453,
amount: "0.1",
},
});
</script>

Learn More

View Documentation

Joaquim Verges

We've extended the x402 protocol to support passing arbitrary chain ids, and expanded support to 13 new mainnets and 13 new testnets. You can now accept internet-native payments across a total of 35 chains.

In v5.109.0 of the thirdweb SDK, we've introduced new APIs to verify and settle payments and updated our client side API for multichain support.

Here's an example of using settlePayment within a Next.js API route:

// Usage in a Next.js API route
import { settlePayment, facilitator } from "thirdweb/x402";
import { createThirdwebClient } from "thirdweb";
const client = createThirdwebClient({
secretKey: process.env.THIRDWEB_SECRET_KEY,
});
const thirdwebFacilitator = facilitator({
client,
serverWalletAddress: "0x1234567890123456789012345678901234567890",
});
export async function GET(request: Request) {
// verify and settle the payment
const result = await settlePayment({
paymentData: request.headers.get("x-payment"),
resourceUrl: "https://api.example.com/premium-content",
method: "GET",
payTo: "0x1234567890123456789012345678901234567890",
network: "eip155:42161", // CAIP-2 format: "eip155:<chain_id>"
price: "$0.10", // or specific token
facilitator: thirdwebFacilitator,
});
if (result.status === 200) {
// Payment verified and settled successfully
return Response.json({ data: "premium content" });
} else {
// Payment required
return Response.json(result.responseBody, {
status: result.status,
headers: result.responseHeaders,
});
}
}

You can pass any chain id as the network property using the CAIP-2 notation: eip155:<chain_id>. The thirdweb facilitator will handle settling payments on the given chain using the specified token, otherwise defaults to USDC.

Simply call settlePayment in your endpoint handler, middleware or agentic tool to process a payment everytime your API is called.

Here's the list of new chains supported (mainnet + testnet)

  • Arbitrum One
  • Celo
  • Ethereum mainnet
  • HyperEVM
  • Linea
  • Optimism
  • Plume
  • Polygon
  • Sonic
  • Unichain
  • World Chain
  • XDC

Learn more:

Happy building! 🛠️

Manan Tank

We’re launching SwapWidget - a pre-built, customizable UI that lets you easily add a cross-chain token swap UI to your app in just a few lines of code.

Easily integrate into your app

import { SwapWidget } from "thirdweb/react";
import { createThirdwebClient } from "thirdweb";
// 1. Create a thirdweb client
const client = createThirdwebClient({
clientId: "YOUR_CLIENT_ID",
});
// 2. Render widget in your app
function Example() {
return <SwapWidget client={client} />;
}

Try it out

Manan Tank

We’ve just launched a new Tokens page. With this update, you can:

  • Explore tokens by popularity, trends, and chains across different networks.
  • See market data - token prices, 24-hour volume, and market caps
  • Swap tokens across chains using thirdweb Bridge

Try it out: thirdweb.com/tokens

Joaquim Verges

We're excited to announce the release of x402 payment support in the thirdweb SDK, enabling developers to monetize their backend and agent services with seamless, automatic crypto payments.

What is x402?

The x402 protocol is an emerging standard that extends existing 402 HTTP error with automatic crypto payments. When an API requires payment, it responds with a 402 Payment Required status code along with payment instructions. The client can then automatically fulfill the payment and retry the request—all without user intervention beyond the initial wallet approval.
Think of it as "pay-per-call" for APIs, where each request can be individually priced and paid for using cryptocurrency.

x402 in the thirdweb SDK

We've added two new functions to make x402 integration effortless:

Client-Side: wrapFetchWithPayment

Automatically handle paid API calls with a simple wrapper around the native fetch API:

import { wrapFetchWithPayment } from "thirdweb/x402";
import { createThirdwebClient } from "thirdweb";
import { createWallet } from "thirdweb/wallets";
const client = createThirdwebClient({ clientId: "your-client-id" });
const wallet = createWallet("io.metamask");
await wallet.connect({ client });
const fetchWithPay = wrapFetchWithPayment(fetch, client, wallet);
// This call will automatically handle payment if required
const response = await fetchWithPay(
"https://api.example.com/premium-data",
);
const data = await response.json();

How it works:
1. Makes the initial API request
2. If a 402 response is received, parses payment requirements
3. Verifies the payment amount is within your specified limits
4. Signs the payment authorization with your wallet
5. Retries the request with the payment header
6. Returns the successful response

Server-Side: facilitator

Integrate x402 payments into your middleware stack with minimal configuration. Works with all the existing x402 middleware libraries already out there. Here's an example with x402-next

import { createThirdwebClient } from "thirdweb";
import { facilitator } from "thirdweb/x402";
import { paymentMiddleware } from "x402-next";
const client = createThirdwebClient({
secretKey: process.env.THIRDWEB_SECRET_KEY,
});
export const middleware = paymentMiddleware(
"0xYourRecipientWallet",
{
"/api/premium-endpoint": {
price: "$0.01",
network: "base-sepolia",
config: {
description: "Access to premium AI features",
},
},
"/api/data-analysis": {
price: "$0.05",
network: "base-sepolia",
config: {
description: "Advanced data processing",
},
},
},
facilitator({
client,
serverWalletAddress: "0xYourServerWallet",
}),
);
export const config = {
matcher: ["/api/premium-endpoint", "/api/data-analysis"],
};

Get Started


Try the Live Demo
Experience x402 payments in action at our interactive playground.

Read the Documentation
Get detailed implementation guides in our x402 documentation.

Stay tuned for more x402 utilities and expanded functionality in the next few weeks!

Happy building! 🛠️

Greg

We've deployed new and improved bridge contracts that affect our Payments, Bridge, and Tokens products. The new contracts come with a variety of improvements including:

  • Better execution prices and slippage resistance
  • More informative events for transaction indexing
  • Dynamic protocol fees for high-volume users

The new contracts are being iteratively deployed to all chains in the coming days. During the deployment period, users may be prompted to interact with a new contract.

Old Contract: 0xF8Ab2dBE6c43bf1a856471182290f91D621Ba76d

New Contract: 0x7d34a477e2678c8e19d821eec103d4def4af6f4a

ZK Contract: 0xC8EF2D40Ef314bb433f86ce2b67bA880BB48771b

Joaquim Verges

The Nebula first party app - nebula.thirdweb.com - will be deprecated September 30th 2025 in favor of thirdweb AI.

If you have any funds in the nebula in-app wallet - please withdraw them by September 30th 2025.

To continue using the service, head over to the thirdweb dashboard and create a project. You will find the same functionality as before under the AI tab.

We will be shipping continuous updates and improvements to thirdweb AI in the next few weeks, stay tuned for announcements!

Giselle Chacon

At thirdweb, our mission is to help builders succeed — from those starting their first project to teams scaling to millions of users. To keep improving, we’ve added a new feedback and rating feature in support in dashboard after ticket closure.

How it works

  1. Go to your thirdweb dashboard, and at the team level, click Support from the left menu.
  2. Open and create tickets or cases directly from there.
  3. After an interaction with our AI agent or support team, and once your ticket is closed, you’ll see the option to:
    • ⭐ Leave a star rating
    • 💬 Add a quick comment about your experience

Why it matters

We take your feedback seriously. Every rating helps us identify what’s working well and where we can improve. This ensures we continue building the best tools and providing the best support for builders like you.

Support that scales with you

Our support team is here to help you integrate thirdweb and bring your ideas to life. Different plans come with different SLAs, which you can check out here: thirdweb.com/pricing.

We appreciate every single customer and your feedback is key to making thirdweb the best tool for builders. 🚀

Firekeeper

✨ New Features

Bridge API - Chain Discovery Endpoint

  • Endpoint: GET /v1/bridge/chains
  • Description: Retrieves a list of blockchain networks supported for bridging.
  • Details:
    • Returns chain ID, name, icon, and native currency details

Example Response:

{
"result": [
{
"chainId": 1,
"name": "Ethereum Mainnet",
"icon": "https://...",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
}
}
]
}

Bridge API - Fiat-to-Crypto Conversion Endpoint

  • Endpoint: GET /v1/bridge/convert
  • Description: Calculates the equivalent crypto token amount for a given fiat currency amount based on current market prices. This endpoint provides conversion rate estimates and does not execute any transactions.
  • Parameters:
    • from (required) - Source fiat currency (broad list supported)
    • fromAmount (required) - Fiat amount (positive number)
    • chainId (required) - Target blockchain chain ID
    • to (required) - Ethereum address of the target token
  • Response: Returns JSON with converted crypto amount.
  • Performance:
    • Smart caching (30s fresh, 5m stale)
    • Rate-limited, requires client authentication

Example Usage:

GET /v1/bridge/convert?from=USD&fromAmount=100&chainId=42161&to=0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9

🔄 Changes

  • Migration: Legacy endpoint pay.thirdweb.com/convert/fiatToCrypto replaced by /v1/bridge/convert.

Visit the full reference here.

Firekeeper

✨ New Features

Token Owners Endpoint (/v1/tokens/{chainId}/{address}/owners)

  • Multi-standard Support: Now supports ERC-20, ERC-721, and ERC-1155 token contracts (previously ERC-20 only)
  • NFT Collection Owners: Query all owners of an NFT collection without specifying a token ID
  • Specific NFT Token Owners: Query owners of a specific NFT token by providing the tokenId parameter

📝 API Changes

Request Parameters

  • Added optional tokenId parameter to filter NFT owners by specific token ID
    • When provided: Returns owners of the specific NFT token
    • When omitted: Returns collection-level owners for NFTs, or token holders for ERC-20, automatically detecting what kind of token it is.

Response Format

  • Added optional tokenId field to owner objects in responses
    • Present for NFT queries (ERC-721/ERC-1155)
    • Absent for ERC-20 token queries

Response Behavior by Token Type

  • ERC-20: Returns token holders with their balance amounts
  • ERC-721 Collection: Returns owners with their token IDs and amount "1"
  • ERC-721 Specific: Returns owners of the specified token ID
  • ERC-1155 Collection: Returns owners with their token IDs and balance amounts
  • ERC-1155 Specific: Returns owners of the specified token ID with their balance amounts

🔧 Improvements

  • Automatic Token Standard Detection: The API automatically detects whether a contract is ERC-20, ERC-721, or ERC-1155 using ERC-165
  • Enhanced Error Handling: Better error messages specific to each token standard
  • Consistent Pagination: All token types now return consistent pagination metadata (hasMore, limit, page)

📚 Documentation

  • Updated OpenAPI specifications with examples for all supported token standards
  • Clarified what the amount field represents for different token types
Joaquim Verges

Every project in the thirdweb dashboard now comes with a dedicated AI chat. Think of it as your dev companion in your web3 building journey.

What thirdweb AI can do for you

  • Transact with your connected dashboard wallet
  • Swap tokens with your connected dashboard wallet
  • Deploy contracts with rich metadata
  • Ask about contract addresses, ABI, events, transactions, etc
  • Ask about chain stats, block info, etc
  • Ask about a wallet transactions, tokens, nfts, etc
  • Query contract state
  • Upload files to IPFS
  • Convert units, encode or decode data, etc
  • Debug transactions
  • and more!

Other features

  • View all past conversations, including the ones created programmatically from your apps
  • Track token usage
  • Auto execute transactions with your server wallets (coming soon!)

All of these make thirdweb AI a great sidekick during and post development. Head over to your project dashboard and give it a spin!

What about Nebula?

We've rebranded Nebula to thirdweb AI - now generally available via dashboard and API. As part of this change, nebula.thirdweb.com will be sunsetted on September 30th 2025. Please migrate any assets from it before that.

Samina Kabir
Greg

For a while, we offered Payments as an all-in-one solution. It helped developers handle everything from accepting crypto payments to moving tokens across chains. But as we grew, we noticed the needs for a crypto checkout and a crypto bridge becoming distinct amongst users.

That’s why we’re breaking out our product and re-introducing Bridge alongside Payments.

Bridge

Bridge is built for token transfers and swaps across any chain. Instantly move assets where you need them whether that’s supporting cross-chain dApps, enabling multi-chain liquidity, or powering user experiences that feel seamless across the EVM network.

Payments

Payments is focused on accepting crypto payments for goods and services. It gives businesses and developers a simple, reliable way to collect crypto from users with all the tools you need to map your onchain checkout flow to offchain actions such as accounting or completing orders.


Why the Split?

When everything lived under “Payments,” it blurred the lines. Some needed a checkout solution, while others needed a cross-chain infrastructure tool.

By separating the products, we aim to:

  • Make it easier for you to choose the right tool for the job.
  • Double down on specialized improvements for each product.
  • Offer clearer docs, examples, and support paths depending on whether you’re building with Payments or Bridge.

What’s Next

We are deprecating the following endpoints: /payments/swap and /tokens/swap in favor of the new Bridge endpoint /bridge/swap. This deprecation will not break your application but we encourage you to swap out this endpoint to ensure you are up to date and receive the subsequent updates to the endpoint.

👉 Learn more about this change.

You will also notice a breakout of Payments and Bridge on dashboard and in our documentation.

👉 View the updated Payments documentation

👉 View the new Bridge documentation

👉 View the API reference

This update doesn’t affect your existing integrations right away — but moving forward, you’ll see dedicated updates, features, and roadmaps for both.

We appreciate your patience with all the changes!

If you have any further questions or need support in regards to this update, please do not hesitate to reach out.

Nischit Pradhan

As part of ongoing efforts to streamline and maintain our API, we are deprecating several Insight Service endpoints that have seen limited usage.

The following endpoints will be deprecated:

  • GET /v1/transactions/{contractAddress}/{signature}
  • GET /v1/tokens/transfers/transaction/{transaction_hash}
  • GET /v1/contracts/deployed-by/{address}
  • GET /v1/contracts/metadata/{address}
  • POST /v1/decode/{address}
  • GET /v1/nfts/transfers/transaction/{transaction_hash}

Timeline

  • Deprecation Announcement: Effective immediately.
  • Deprecation Period: These endpoints will remain available for 30 days to allow for migration.
  • Removal Date: After the deprecation period, these endpoints will be permanently disabled.

Impact

  • Existing applications that call these endpoints will need to migrate to supported alternatives.
  • If your integration does not use these endpoints, no action is required.

Alternatives

  • For transaction-related insights: use GET /v1/transactions.
  • For token transfers: use GET /v1/events with filters.
  • For NFT transfers: use GET /v1/events with transaction or address filters.

(Please refer to our latest [API documentation] for details.)

Greg

You can now specify custom slippage tolerance on the /bridge/swap endpoint. With the slippageToleranceBps parameter, you can specify how many basis points in slippage your swap can tolerate. Warning: Lower slippage tolerance values could result in reverted swaps.

Without this value specified, it will continue to use the default behavior of automatically calculated slippage tolerance.

curl https://api.thirdweb.com/v1/bridge/swap \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--header 'x-client-id: YOUR_SECRET_TOKEN' \
--data '{
"exact": "input",
"tokenIn": {
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"chainId": 42161,
"amount": "100"
},
"tokenOut": {
"address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
"chainId": 42161,
"minAmount": "80"
},
"from": "0xEfc38EF8C09535b25e364b6d1a7C406D3972f2A9",
"slippageToleranceBps": 50
}'

Payments API

This parameter is also available directly on the payments API. Learn more in the API reference.

Firekeeper

The v1/wallets/{address}/tokens endpoint now exposes additional query parameters for fine-grained control over token retrieval:

New Query Parameters:

  • metadata (boolean, default: true) - Include/exclude token metadata
  • resolveMetadataLinks (boolean, default: true) - Resolve metadata links for richer data
  • includeSpam (boolean, default: false) - Include/exclude spam tokens
  • includeNative (boolean, default: true) - Include/exclude native tokens (ETH, MATIC, etc.)
  • sortBy (enum, default: "usd_value") - Sort by: balance, token_address, token_price, or usd_value
  • sortOrder (enum, default: "desc") - Sort order: asc or desc
  • includeWithoutPrice (boolean, default: true) - Include/exclude tokens without price data

Breaking Changes:

  • None - all new parameters are optional with backward-compatible defaults

Defaults Updated:

  • Default sorting changed from balance to usd_value (descending)
  • All inclusion filters default to maximum data coverage

Example Usage:

GET /v1/wallets/{address}/tokens?chainId=1&sortBy=usd_value&includeSpam=false&limit=50

Developer Notes:

  • Existing API calls continue to work unchanged
  • New defaults provide more useful token ordering (by USD value)
  • Filters allow customization for specific use cases (e.g., excluding spam, metadata-only requests)
Greg

We've deprecated the /payments/swap and /tokens/swap endpoints in favor of the /bridge/swap endpoint. This endpoint behaves the same as the pre-existing swap endpoints, allowing you to perform cross-chain swaps with both input and output-centric amounts. To learn more, see the thirdweb API reference.

curl -sS -X POST "https://api.thirdweb.com/v1/bridge/swap" \
-H "Content-Type: application/json" \
-H "x-secret-key: <YOUR_SECRET_KEY>" \
-d '{
"from": "0xYOUR_WALLET",
"exact": "input",
"tokenIn": { "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "chainId": 42161, "amount": "1000000" },
"tokenOut": { "address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "chainId": 42161, "minAmount": "990000" }
}'