Prerequisites
- Ensure you have a wallet created.
- API Key: Ensure you have an API key with the scopes:
wallets:signatures.createandwallets:transactions.create.
Adding a delegated signer
- React
- Node.js
- React Native
- REST
Report incorrect code
Copy
Ask AI
import { useWallet } from '@crossmint/client-sdk-react-ui';
const { wallet } = useWallet();
const externalSigner = {
type: "external-wallet",
address: "0x1234567890123456789012345678901234567890"
}
await wallet.addDelegatedSigner({
signer: externalSigner,
});
Parameters
The locator of the signer to add.
Report incorrect code
Copy
Ask AI
import { CrossmintWallets, createCrossmint } from "@crossmint/wallets-sdk";
const crossmint = createCrossmint({
apiKey: "<your-server-api-key>",
});
const crossmintWallets = CrossmintWallets.from(crossmint);
const wallet = await crossmintWallets.getWallet(
"email:user@example.com:evm",
{ chain: "base-sepolia", signer: { type: "email" } }
);
const externalSigner = {
type: "external-wallet",
address: "0x1234567890123456789012345678901234567890"
}
await wallet.addDelegatedSigner({
signer: externalSigner,
});
Parameters
The locator of the signer to add.
Report incorrect code
Copy
Ask AI
import { useWallet } from '@crossmint/client-sdk-react-native-ui';
const { wallet } = useWallet();
const externalSigner = {
type: "external-wallet",
address: "0x1234567890123456789012345678901234567890"
}
await wallet.addDelegatedSigner({
signer: externalSigner,
});
Parameters
The locator of the signer to add.
Delegated signers must be approved by the wallet’s admin signer.
The SDK handles this automatically, but with the REST API you must approve the transaction (if using Solana, Stellar)
or signature (if using EVM) to complete it.Sign the approval message field returned in the response inside
1
Create the delegated signer
Call the create delegated signer endpoint.See the API reference for more details.
Report incorrect code
Copy
Ask AI
curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/email:user@example.com:evm/signers \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"chain": "base",
"signer": "external-wallet:0x1234567890123456789012345678901234567890"
}'
2
Sign the approval returned in the response
If you are using an
api-key as the admin signer you can skip the following steps.transaction.approvals (for EVM) or signature.approvals (for Solana and Stellar) using the admin signer.3
Approve the transaction or signature to create the delegated signer
- EVM
- Solana and Stellar
Call the approve signature endpoint using the signature from the previous step and the signature id returned in the call from Step 1.See the API reference for more details.
Report incorrect code
Copy
Ask AI
curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/email:user@example.com:evm/signatures/b984491a-5785-43c0-8811-45d46fe6e520/approvals \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"approvals": [{
"signer": "email:user@example.com",
"signature": "0x1234567890abcdef..."
}]
}'
Call the approve transaction endpoint using the signature from the previous step and the transaction id returned in the call from Step 1.See the API reference for more details.
Report incorrect code
Copy
Ask AI
curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/email:user@example.com:solana/transactions/b984491a-5785-43c0-8811-45d46fe6e520/approvals \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"approvals": [{
"signer": "email:user@example.com",
"signature": "5qY6wXw6zTn7..."
}]
}'
Getting all delegated signers
- React
- Node.js
- React Native
- REST
Report incorrect code
Copy
Ask AI
import { useWallet } from '@crossmint/client-sdk-react-ui';
const { wallet } = useWallet();
const signers = await wallet.delegatedSigners();
Returns
Report incorrect code
Copy
Ask AI
import { CrossmintWallets, createCrossmint } from "@crossmint/wallets-sdk";
const crossmint = createCrossmint({
apiKey: "<your-server-api-key>",
});
const crossmintWallets = CrossmintWallets.from(crossmint);
const wallet = await crossmintWallets.getWallet(
"email:user@example.com:evm",
{ chain: "base-sepolia", signer: { type: "email" } }
);
const signers = await wallet.delegatedSigners();
Returns
React Native
Report incorrect code
Copy
Ask AI
import { useWallet } from '@crossmint/client-sdk-react-native-ui';
const { wallet } = useWallet();
const signers = await wallet.delegatedSigners();
Returns
Report incorrect code
Copy
Ask AI
curl --request GET \
--url https://staging.crossmint.com/api/2025-06-09/wallets/email:user@example.com:evm \
--header 'X-API-KEY: <x-api-key>'

