> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# NodeJS changelog

The release notes for our [NodeJS (`@privy-io/node`)](https://www.npmjs.com/package/@privy-io/node) SDK.

<Update label="0.24.0">
  ### Added

  * Add swap API support via the new `swap` service.
  * API updates.

  ### Fixed

  * Fixed action response type imports to correctly reflect latest API types.
</Update>

<Update label="0.23.0">
  ### Added

  * Wallet import support for other chains.
  * ERC-1271 support for gas-sponsored wallets.
  * API updates.
</Update>

<Update label="0.22.0">
  ### Added

  * API updates.

  ### Fixed

  * Bumped `svix` to `^1.92.2` to resolve uuid CVE.
  * Fixed `content-type` header not being sent for requests with an omitted optional body.
</Update>

<Update label="0.21.0">
  ### Added

  * API updates.
</Update>

<Update label="0.20.0">
  ### Added

  * Add Tempo transaction support to `createViemAccount`.
  * API updates.

  ### Breaking changes

  * Return types for `intents.createPolicyRule()` and `intents.updatePolicyRule()` changed from `RuleIntentResponse` to `RuleMutateIntentResponse`.
  * Return type for `intents.deletePolicyRule()` changed from `RuleIntentResponse` to `RuleDeleteIntentResponse`.
  * `GetFiatOnrampURLResponse` is now a discriminated union of `FiatOnrampURLSessionResponse` and `FiatOnrampStripeSDKSessionResponse`.
  * Return type of `createViemAccount` changed from `LocalAccount` to `PrivyViemAccount`.
  * Minimum `viem` peer dependency bumped from `^2.24.1` to `^2.44.2`.
</Update>

<Update label="0.19.0">
  ### Added

  * API updates.

  ### Improvements

  * Redact API-key headers in debug logs.
</Update>

<Update label="0.18.0">
  ### Added

  * Add `requestExpiry` option on `PrivyClientOptions`, a `PrivyRequestExpiryOptions` discriminated union with `defaultMs`, `defaultIntentMs`, and `disabled` fields. Intents endpoints now default to a 72-hour expiry.
  * API updates.

  ### Deprecated

  * `PrivyClientOptions.defaultRequestExpiryMs` in favor of `requestExpiry.defaultMs`.
  * `PrivyClientOptions.disableRequestExpiry` in favor of `requestExpiry.disabled`.

  ### Breaking changes

  * Default request expiry for intents endpoints changed from 15 minutes to 72 hours. To keep the previous behavior, pass `requestExpiry: { defaultIntentMs: 15 * 60 * 1000 }`.
</Update>

<Update label="0.17.0">
  ### Added

  * Add `disableRequestExpiry` client option to opt out of automatically sending the `privy-request-expiry` header.
  * Add wallet `sendCalls` support for Ethereum.
  * Add idempotency header support for `earn` service methods.
  * Add `PrivyWebhooksService.verify()` with svix signature verification and typed deserialization, returning a `WebhookPayload` discriminated union.
  * Support setting request headers via environment variables.
  * API updates.

  ### Deprecated

  * `WebhookEvent` type alias in favor of `WebhookPayload`.
</Update>

<Update label="0.16.0">
  ### Added

  * API updates.
</Update>

<Update label="0.15.0">
  ### Added

  * Add `transfer` convenience method to `PrivyWalletsService`.
  * Add `earn.ethereum.deposit` convenience method.
  * Add `earn.ethereum.withdraw` convenience method.
  * Add `earn.ethereum.incentive.claim` convenience method.
  * Mark `AbiSchema` as `readonly`.
  * API updates.
</Update>

<Update label="0.14.0">
  ### Added

  * Add `getWalletByAddress` method to look up a wallet by its blockchain address.
  * Add `emailDomain` type support for allowlist entries via the new `EmailDomainInviteInput` type.
  * Add `bitcoin-taproot` chain type support for wallet creation and signing.
  * Add `Schnorr` signing algorithm support.
</Update>

<Update label="0.13.0">
  ### Added

  * Add `IntentService` for manual approval workflows via `privy.intents`.
  * Add `exportPrivateKey` and `exportSeedPhrase` convenience methods on wallets.
  * API updates.
</Update>

<Update label="0.12.0">
  ### Added

  * All authorized requests now include a `privy-request-expiry` header defaulting to 15 minutes. Use the new `request_expiry` input field or `PrivyClientOptions.defaultRequestExpiryMs` to override.
  * Add support for the `x-ratelimit-reset` header on 429 responses.
  * Extract `authorizeRequest` helper for wallet RPC authorization.
  * API updates.

  ### Fixed

  * `defaultRequestExpiryMs` is now typed as a number.
  * Reference the new wallet RPC types.
  * Use `SuccessResponse` for delete operations in key-quorums and policies.
  * Validate that id parameters are not empty strings in get methods.

  ### Breaking changes

  * `KeyQuorumDeleteResponse`, `PolicyDeleteResponse`, and `PolicyDeleteRuleResponse` have been removed. The corresponding `delete()` / `deleteRule()` methods now return `SuccessResponse`.
  * `AppResponse` sub-types (e.g. `AppResponse.EmbeddedWalletConfig`, `AppResponse.FundingConfig`) have been removed in favor of standalone types (`EmbeddedWalletConfigSchema`, `FundingConfigResponseSchema`, etc.).
  * RPC and signing response data types have been renamed from namespace form to flat exports (e.g. `EthereumPersonalSignRpcResponse.Data` → `EthereumPersonalSignRpcResponseData`; same pattern for all Ethereum, Solana, and raw-sign responses).
</Update>

<Update label="0.11.0">
  ### Breaking changes

  * `PrivyWalletsService.create()` no longer accepts `'privy-idempotency-key'` as a parameter. Use `idempotency_key` instead.
  * `PrivyPoliciesService.create()` no longer accepts `'privy-idempotency-key'` as a parameter. Use `idempotency_key` instead.

  ### Added

  * Added the `apps` service for access to API calls on the App resource.
  * Added support for `apps().getSettings()`, reading the configuration object of your Privy app.
  * Added support for `apps().inviteToAllowlist()`, `.getAllowlist()` and `.removeFromAllowlist()` allowing fine-grained control on user invites.
  * Added support for `apps().getTestAccessToken()` enabling integration tests for your development app.
  * API updates.
</Update>

<Update label="0.10.1">
  ### Added

  * API updates.
</Update>

<Update label="0.10.0">
  ### Added

  * Added `signUserOperation` utility for signing Ethereum user operations.
  * Exposed the `LinkedAccount` type for improved type safety.
  * Webhook verification now returns a typed payload.
  * API updates.
</Update>

<Update label="0.9.0">
  ### Added

  * Added x402 payment methods support.
  * API updates.
</Update>

<Update label="0.8.0">
  ### Breaking changes

  * The `type` property on `LinkedAccountCustomOAuth` is now guaranteed present (previously optional).

  ### Added

  * Added EIP-7702 support: transaction `type` now includes `4`, and `authorization_list` parameter added to transaction inputs.
  * Added `'eurc'` and `'usdb'` asset types to balance and transaction queries.
  * Added `'eur'` currency option to `BalanceGetParams.include_currency`.
  * Added `'chain_id'` as a valid field in `EthereumTransactionCondition` for policies.
  * Added `user_operation_hash` field to `EthereumSendTransactionRpcResponse.Data`.
</Update>

<Update label="0.7.0">
  ### Added

  * Added support for `@solana/kit` signers via the `createSolanaKitSigner` function.
  * Added `generateP256KeyPair`, a helper for creating P256 keypairs for use in resource ownership and authorization.

  ### Deprecated

  * Deprecated `verifyAuthToken` in favor of `verifyAccessToken` (introduced in this version).
</Update>

<Update label="0.6.2">
  ### Dependencies

  * Update `@hpke/core` to `^1.7.5`
</Update>

<Update label="0.6.1">
  ### Added

  * Added support for Sepolia testnet in transaction queries.

  ### Improved

  * Enhanced `WalletRawSignResponse` to include a `method` field for better response identification.
  * Renamed the `WalletRawSignParams.Bytes` variant, to match the style of the existing `WalletRawSignParams.Hash` option.
</Update>

<Update label="0.6.0">
  ### Added

  * Added support for Tron in policies, including specific transaction conditions for `TransferContract` and `TriggerSmartContract`.
  * Added support for `eth_signUserOperation` policies.
  * Expanded transaction query support to include Ethereum, Arbitrum, Linea, Optimism, and Polygon (previously limited to Base).
  * Enhanced raw signing capabilities with hex encoding and support for both `keccak256` and `sha256` hash functions.
</Update>

<Update label="0.5.0">
  ### Breaking changes

  * RPC response types (e.g. `EthereumPersonalSignRpcResponse`) are now exported directly instead of nested under the `WalletRpcResponse` namespace.

  ### Added

  * Added support for reading Passkey accounts from identity tokens.
  * **Breaking change**: Updated the `AuthorizationContext` interface to support multiple user JWT signing mechanisms.

  ### Fixed

  * Includes a fix for the users search `searchTerm` parameter.
</Update>

<Update label="0.4.1">
  ### Added

  * Added support for performing a raw signature over a utf-8 byte sequence.

  ### Improved

  * Better docs around resource ownership and authorization keys.
</Update>

<Update label="0.4.0">
  ### Added

  * Support linked accounts for custom OAuth providers.
  * Improved typing for linked embedded wallet accounts.
</Update>

<Update label="0.3.0">
  ### Added

  * Support for verifying webhook invocations (via signatures).
</Update>

<Update label="0.2.0">
  ### Fixed

  * Automatically remove authorization key prefixes
</Update>

<Update label="0.1.0">
  **Initial release** of the NodeJS SDK. See the [quickstart](/basics/nodeJS/quickstart) guide for more
  details on how to get started.
</Update>
