Skip to main content
A session key is a separate signer that a Deposit Wallet Owner authorizes to trade for a Deposit Wallet. It lets an integration perform routine trading without using the owner’s key. A session key cannot withdraw funds from the Deposit Wallet.
Session keys work only with Deposit Wallets. A dedicated migration flow from Safe Wallets and Proxy Wallets is planned.
A session key can be scoped to trade on specific supported venues or all venues:

Authorize a Session Key

The Deposit Wallet Owner authorizes a session signer address with an expiration and scoped permissions.
Session keys are Externally Owned Accounts (EOAs). Keep their private keys secret to prevent unauthorized trading on behalf of your Deposit Wallet.
Authorizing a session key requires a Builder API key. See Create New Accounts to generate one.
During the initial rollout, contact the Polymarket team to authorize your Builder API key for session-key management.
1

Generate a Session Key

First, generate a fresh EVM keypair for the session key.
Store your private key in a secrets manager or another secure key store.
2

Create the Deposit Wallet Owner Client

Then, create a SecureClient with the Deposit Wallet Owner’s private key and Builder API credentials.
3

Authorize the Session Key

Finally, call authorizeSessionKey() to authorize your session key with the desired expiration.
You can also authorize only the desired trading venues with the scopes parameter:

Place an Order

This section shows how to place an order using a session key. See Place Orders for the complete order workflow.
1

Create the Session Client

First, create a SecureClient for the Deposit Wallet with the session signer.
2

Place an Order

Then, use the sessionClient to submit a limit order.
The order buys 10 shares at a price of 0.52 USD per share. See Place Orders for market constraints, order types, and response handling.

Fetch Session Keys

List the active session keys for a Deposit Wallet to see which signers can currently act on its behalf.
Call fetchSessionKeys() on the Deposit Wallet Owner’s SecureClient:

Revoke a Session Key

Revoke a session key when an integration no longer needs access or its private key may have been exposed. Revocation prevents further trading by that key and cancels its open orders without affecting orders placed by other session keys. Revocation completes after the session key’s open orders are canceled and the on-chain transaction is confirmed, which may take several minutes.
Call revokeSessionKey() on the Deposit Wallet Owner’s SecureClient with the session key’s public address:
The method resolves after order cleanup and on-chain confirmation. The result contains the confirmed transaction.