Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/sieblyio/kraken-api/llms.txt

Use this file to discover all available pages before exploring further.

The SpotClient provides comprehensive funding methods covering the full lifecycle of moving assets in and out of Kraken, along with the complete Kraken Earn API for allocating funds to yield strategies. All methods in this section are private endpoints requiring a valid API key and secret. OAuth-based Fast API key management is also documented here.
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});
API key permissions: Funding methods require the Funds permission group — enable Query, Deposit, and/or Withdraw as appropriate for your use case. Grant only the minimum permissions required.

Deposits

getDepositMethods(params)

Retrieve methods available for depositing a particular asset. Signature
getDepositMethods(
  params: SpotGetDepositMethodsParams
): Promise<SpotAPISuccessResponse<SpotDepositMethod[]>>
asset
string
required
Asset to get deposit methods for (e.g. "XBT", "ETH").
aclass
'currency' | 'tokenized_asset'
Asset class filter.
rebase_multiplier
'rebased' | 'base'
Controls how multi-collateral values are reported.
PropertyValue
HTTP methodPOST
Endpoint0/private/DepositMethods
Auth requiredYes
Response shapeSpotDepositMethod[]
FieldTypeDescription
methodstringName of deposit method (e.g. "Bitcoin")
limitstring | booleanMaximum deposit amount, or false if no limit
feestringDeposit fee
address-setup-feestringWhether there is an address setup fee
gen-addressbooleanWhether new addresses can be generated
minimumstringMinimum deposit amount
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const methods = await client.getDepositMethods({ asset: 'XBT' });
methods.result.forEach((m) => {
  console.log(`Method: ${m.method}, Fee: ${m.fee}, Min: ${m.minimum}`);
  console.log(`  Can generate address: ${m['gen-address']}`);
});

getDepositAddresses(params)

Retrieve existing deposit addresses or generate a new one for a particular asset and method. Signature
getDepositAddresses(
  params: SpotGetDepositAddressesParams
): Promise<SpotAPISuccessResponse<SpotDepositAddress[]>>
asset
string
required
Asset to get deposit addresses for (e.g. "XBT").
method
string
required
Deposit method name (from getDepositMethods()). E.g. "Bitcoin".
new
boolean
If true, generates a new deposit address. Defaults to false.
amount
string | number
Amount you want to deposit (for methods that require pre-registration).
aclass
'currency' | 'tokenized_asset'
Asset class filter.
PropertyValue
HTTP methodPOST
Endpoint0/private/DepositAddresses
Auth requiredYes
Response shapeSpotDepositAddress[]
FieldTypeDescription
addressstringDeposit address
expiretmstringExpiration time ("0" if non-expiring)
newbooleantrue if the address has never been used
tagstring?Memo/tag for XRP, XLM, EOS, STX
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const addresses = await client.getDepositAddresses({
  asset: 'XBT',
  method: 'Bitcoin',
  new: false,
});
addresses.result.forEach((a) => {
  console.log('Address:', a.address, '| New:', a.new);
});

getDepositsStatus(params?)

Retrieve information about recent deposits. Results are sorted by recency. Signature
getDepositsStatus(
  params?: SpotGetDepositStatusParams
): Promise<SpotAPISuccessResponse<SpotDepositStatusResponse>>
asset
string
Filter by asset (e.g. "XBT").
method
string
Filter by deposit method.
aclass
'currency' | 'tokenized_asset'
Asset class filter.
start
string
Unix timestamp to begin results from.
end
string
Unix timestamp to end results at.
cursor
boolean | string
Set to true to enable cursor-based pagination. Pass the cursor string from a previous response to get the next page.
limit
number
Number of results per page when using cursor pagination.
rebase_multiplier
'rebased' | 'base'
Controls how multi-collateral values are reported.
PropertyValue
HTTP methodPOST
Endpoint0/private/DepositStatus
Auth requiredYes
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const status = await client.getDepositsStatus({
  asset: 'XBT',
  method: 'Bitcoin',
});
console.log(status.result);

Withdrawals

getWithdrawalMethods(params?)

Retrieve the list of withdrawal methods available to the user. Signature
getWithdrawalMethods(
  params?: SpotGetWithdrawalMethodsParams
): Promise<SpotAPISuccessResponse<SpotWithdrawalMethod[]>>
asset
string
Filter by asset (e.g. "XBT").
network
string
Filter by blockchain/network name.
aclass
'currency' | 'tokenized_asset'
Asset class filter.
rebase_multiplier
'rebased' | 'base'
Controls how multi-collateral values are reported.
PropertyValue
HTTP methodPOST
Endpoint0/private/WithdrawMethods
Auth requiredYes
Response shapeSpotWithdrawalMethod[]
FieldTypeDescription
assetstringAsset name
methodstringWithdrawal method name
networkstringBlockchain/network name
minimumstringMinimum withdrawal amount
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const methods = await client.getWithdrawalMethods({ asset: 'XBT' });
methods.result.forEach((m) => {
  console.log(`${m.method} via ${m.network} — min: ${m.minimum}`);
});

getWithdrawalAddresses(params?)

Retrieve the list of withdrawal addresses saved in your account. Signature
getWithdrawalAddresses(
  params?: SpotGetWithdrawalAddressesParams
): Promise<SpotAPISuccessResponse<SpotWithdrawalAddress[]>>
asset
string
Filter by asset.
method
string
Filter by withdrawal method.
key
string
Filter by withdrawal key name (the label you assigned to the address in your Kraken account).
verified
boolean
Filter by address verification status.
aclass
'currency' | 'tokenized_asset'
Asset class filter.
PropertyValue
HTTP methodPOST
Endpoint0/private/WithdrawAddresses
Auth requiredYes
Response shapeSpotWithdrawalAddress[]
FieldTypeDescription
addressstringWithdrawal address
assetstringAsset name
methodstringWithdrawal method
keystringAddress label/key name
tagstring?Memo/tag for XRP, XLM, EOS, STX
verifiedbooleanWhether the address is verified
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const addresses = await client.getWithdrawalAddresses({
  asset: 'XBT',
  verified: true,
});
addresses.result.forEach((a) => {
  console.log(`Key: ${a.key}${a.address}`);
});

getWithdrawalInfo(params)

Retrieve fee and limit information about a potential withdrawal before submitting it. Signature
getWithdrawalInfo(
  params: SpotGetWithdrawalInfoParams
): Promise<SpotAPISuccessResponse<SpotWithdrawalInfo>>
asset
string
required
Asset to withdraw (e.g. "XBT").
key
string
required
Withdrawal key name (label of the saved address).
amount
string
required
Amount to withdraw.
PropertyValue
HTTP methodPOST
Endpoint0/private/WithdrawInfo
Auth requiredYes
Response shapeSpotWithdrawalInfo
FieldTypeDescription
methodstringWithdrawal method that will be used
limitstringMaximum amount that can be withdrawn
amountstringNet amount to be received after fees
feestringWithdrawal fee
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const info = await client.getWithdrawalInfo({
  asset: 'XBT',
  key: 'btc_2709',
  amount: '0.5',
});
console.log('Method:', info.result.method);
console.log('Fee:', info.result.fee);
console.log('You will receive:', info.result.amount);
console.log('Withdrawal limit:', info.result.limit);
Always call getWithdrawalInfo() before submitWithdrawal() to confirm the fee and verify the amount you will receive. This prevents surprises from network fees.

submitWithdrawal(params)

Submit a withdrawal request. Signature
submitWithdrawal(
  params: SpotWithdrawFundsParams
): Promise<SpotAPISuccessResponse<{ refid: string }>>
asset
string
required
Asset to withdraw (e.g. "XBT").
key
string
required
Withdrawal key name (label of the saved destination address).
amount
string
required
Amount to withdraw (gross amount including fees).
address
string
Optional confirmation of the destination address (must match the address saved under key).
max_fee
string
If the withdrawal fee exceeds this value, the withdrawal will fail. Useful for capping costs.
aclass
'currency' | 'tokenized_asset'
Asset class filter.
rebase_multiplier
'rebased' | 'base'
Controls how multi-collateral values are reported.
PropertyValue
HTTP methodPOST
Endpoint0/private/Withdraw
Auth requiredYes
Returns { refid: string } — the withdrawal reference ID used to track or cancel the withdrawal.
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const withdrawal = await client.submitWithdrawal({
  asset: 'XBT',
  key: 'btc_2709',
  amount: '0.5',
  address: 'bc1qexampleaddress',
  max_fee: '0.0002', // fail if fee > 0.0002 BTC
});
console.log('Withdrawal reference ID:', withdrawal.result.refid);

getWithdrawalsStatus(params?)

Retrieve information about recent withdrawals. Results are sorted by recency. Signature
getWithdrawalsStatus(
  params?: SpotGetWithdrawalsStatusParams
): Promise<SpotAPISuccessResponse<SpotWithdrawalStatus[]>>
asset
string
Filter by asset.
method
string
Filter by withdrawal method.
aclass
'currency' | 'tokenized_asset'
Asset class filter.
start
string
Unix timestamp to begin results from.
end
string
Unix timestamp to end results at.
cursor
boolean | string
Enable cursor-based pagination or pass a cursor string for the next page.
limit
number
Number of results per page when using cursor pagination.
rebase_multiplier
'rebased' | 'base'
Controls how multi-collateral values are reported.
PropertyValue
HTTP methodPOST
Endpoint0/private/WithdrawStatus
Auth requiredYes
Response shapeSpotWithdrawalStatus[]
FieldTypeDescription
refidstringWithdrawal reference ID
txidstringOn-chain transaction ID
assetstringAsset name
amountstringAmount withdrawn
feestringFee paid
status'Initial' | 'Pending' | 'Settled' | 'Success' | 'Failure'Withdrawal status
status-propstring?cancel-pending, canceled, cancel-denied, return, onhold
keystringWithdrawal key name
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const withdrawals = await client.getWithdrawalsStatus({ asset: 'XBT' });
withdrawals.result.forEach((w) => {
  console.log(`${w.refid}: ${w.status}${w.amount} ${w.asset}`);
});

cancelWithdrawal(params)

Cancel a recently requested withdrawal, if it has not already been successfully processed. Signature
cancelWithdrawal(params: {
  asset: string;
  refid: string;
}): Promise<SpotAPISuccessResponse<boolean>>
asset
string
required
Asset of the withdrawal to cancel.
refid
string
required
Reference ID of the withdrawal (returned by submitWithdrawal()).
PropertyValue
HTTP methodPOST
Endpoint0/private/WithdrawCancel
Auth requiredYes
Returns true if the cancellation was successful.
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const cancelled = await client.cancelWithdrawal({
  asset: 'XBT',
  refid: 'AGBSO6T-UFMTTQ-I7KGS6',
});
console.log('Cancellation successful:', cancelled.result);
Withdrawal cancellation is only possible while the withdrawal is in Initial or Pending status. Cancellations of already-settled or broadcast transactions will fail.

submitTransferToFutures(params)

Transfer funds from a Kraken Spot wallet to a Kraken Futures wallet. Transfers in the opposite direction must be initiated via the Kraken Futures API. Signature
submitTransferToFutures(params: SpotWalletTransferParams): Promise<
  SpotAPISuccessResponse<{ refid: string }>
>
asset
string
required
Asset to transfer (e.g. "EUR", "XBT").
from
'Spot Wallet'
required
Must be "Spot Wallet".
to
'Futures Wallet'
required
Must be "Futures Wallet".
amount
string
required
Amount to transfer.
PropertyValue
HTTP methodPOST
Endpoint0/private/WalletTransfer
Auth requiredYes
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const transfer = await client.submitTransferToFutures({
  asset: 'EUR',
  from: 'Spot Wallet',
  to: 'Futures Wallet',
  amount: '500',
});
console.log('Reference ID:', transfer.result.refid);

Kraken Earn

getEarnStrategies(params?)

List available Earn strategies along with their parameters. Only strategies available to the user based on geographic region are returned. Signature
getEarnStrategies(params?: SpotListEarnStrategiesParams): Promise<
  SpotAPISuccessResponse<{ items: SpotEarnStrategy[]; next_cursor?: string }>
>
asset
string
Filter strategies by asset.
lock_type
('flex' | 'bonded' | 'timed' | 'instant')[]
Filter by lock type(s).
ascending
boolean
Sort order — true for ascending, false for descending (default).
cursor
string
Pagination cursor from a previous response’s next_cursor.
limit
number
Number of results per page.
PropertyValue
HTTP methodPOST
Endpoint0/private/Earn/Strategies
Auth requiredYes
Key response fieldsSpotEarnStrategy
FieldTypeDescription
idstringStrategy ID (used for allocate/deallocate)
assetstringAsset this strategy operates on
lock_typeSpotEarnLockTypeLock parameters (type, bonding period, etc.)
apr_estimateSpotEarnAPREstimate?APR estimate range { low, high }
allocation_feestring | numberFee for allocating
deallocation_feestring | numberFee for deallocating
can_allocatebooleanWhether you can currently allocate
can_deallocatebooleanWhether you can currently deallocate
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const strategies = await client.getEarnStrategies({ asset: 'ETH' });
strategies.result.items.forEach((s) => {
  console.log(`${s.id}: ${s.asset} ${s.lock_type.type}`);
  if (s.apr_estimate) {
    console.log(`  APR: ${s.apr_estimate.low}% – ${s.apr_estimate.high}%`);
  }
  console.log(`  Can allocate: ${s.can_allocate}`);
});

getEarnAllocations(params?)

List all Earn allocations for the user. By default, all allocations are returned including those with zero balance from previously used strategies. Signature
getEarnAllocations(
  params?: SpotListEarnAllocationsParams
): Promise<SpotAPISuccessResponse<SpotListEarnAllocationsResponse>>
converted_asset
string
Asset to convert total values into for reporting (e.g. "USD").
hide_zero_allocations
boolean
If true, hides strategies with zero current balance.
ascending
boolean
Sort order.
PropertyValue
HTTP methodPOST
Endpoint0/private/Earn/Allocations
Auth requiredYes
Response shapeSpotListEarnAllocationsResponse
FieldTypeDescription
converted_assetstringCurrency used for conversion
total_allocatedstringTotal amount allocated across all strategies
total_rewardedstringTotal rewards earned
itemsSpotEarnAllocation[]Per-strategy allocation details
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const allocations = await client.getEarnAllocations({
  converted_asset: 'USD',
  hide_zero_allocations: true,
});
console.log('Total allocated (USD):', allocations.result.total_allocated);
console.log('Total rewarded (USD):', allocations.result.total_rewarded);
allocations.result.items.forEach((item) => {
  console.log(`Strategy ${item.strategy_id}: ${item.amount_allocated.total.native} ${item.native_asset}`);
});

allocateEarnFunds(params)

Allocate funds to an Earn strategy. This method is asynchronous — use getEarnAllocationStatus() to poll for completion. Signature
allocateEarnFunds(params: {
  amount: string;
  strategy_id: string;
}): Promise<SpotAPISuccessResponse<boolean>>
strategy_id
string
required
Strategy ID to allocate to (from getEarnStrategies()).
amount
string
required
Amount to allocate (in the strategy’s native asset).
PropertyValue
HTTP methodPOST
Endpoint0/private/Earn/Allocate
Auth requiredYes
Returns true if the allocation request was successfully submitted.

deallocateEarnFunds(params)

Deallocate funds from an Earn strategy. This method is asynchronous — use getEarnDeallocationStatus() to poll for completion. Signature
deallocateEarnFunds(params: {
  amount: string;
  strategy_id: string;
}): Promise<SpotAPISuccessResponse<boolean>>
strategy_id
string
required
Strategy ID to deallocate from.
amount
string
required
Amount to deallocate.
PropertyValue
HTTP methodPOST
Endpoint0/private/Earn/Deallocate
Auth requiredYes

getEarnAllocationStatus(params)

Get the status of the last allocateEarnFunds() request for a specific strategy. Signature
getEarnAllocationStatus(params: {
  strategy_id: string;
}): Promise<SpotAPISuccessResponse<{ pending: boolean }>>
strategy_id
string
required
Strategy ID to check allocation status for.
PropertyValue
HTTP methodPOST
Endpoint0/private/Earn/AllocateStatus
Auth requiredYes
Returns { pending: boolean }true if the allocation is still processing.

getEarnDeallocationStatus(params)

Get the status of the last deallocateEarnFunds() request for a specific strategy. Signature
getEarnDeallocationStatus(params: {
  strategy_id: string;
}): Promise<SpotAPISuccessResponse<{ pending: boolean }>>
strategy_id
string
required
Strategy ID to check deallocation status for.
PropertyValue
HTTP methodPOST
Endpoint0/private/Earn/DeallocateStatus
Auth requiredYes
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

const strategyId = 'ESXUM7H-SJHQ4-ZRMRN2'; // from getEarnStrategies()

// 1. Allocate
const allocated = await client.allocateEarnFunds({
  strategy_id: strategyId,
  amount: '0.5',
});
console.log('Allocation submitted:', allocated.result);

// 2. Poll until complete
let pending = true;
while (pending) {
  await new Promise((r) => setTimeout(r, 2000));
  const status = await client.getEarnAllocationStatus({
    strategy_id: strategyId,
  });
  pending = status.result.pending;
  console.log('Pending:', pending);
}
console.log('Allocation complete!');

OAuth / Fast API Keys

These methods enable programmatic management of OAuth-based authentication and Fast API keys. Fast API keys can be scoped with fine-grained permissions and IP allowlists.

getOAuthAccessToken(params)

Retrieve an OAuth2 access token using an authorization code or refresh token flow. Signature
getOAuthAccessToken(
  params: OauthGetAccessTokenParams
): Promise<OauthGetAccessTokenResponse>
grant_type
'authorization_code' | 'refresh_token'
required
OAuth2 grant type.
code
string
Authorization code. Required when grant_type is authorization_code.
redirect_uri
string
Redirect URI used in the authorization request. Required when grant_type is authorization_code.
refresh_token
string
Refresh token. Required when grant_type is refresh_token.
PropertyValue
HTTP methodPOST
Endpointoauth/token
Auth requiredBasic auth (base64-encoded client credentials)
ResponseOauthGetAccessTokenResponse
FieldTypeDescription
access_tokenstringOAuth2 Bearer token
token_type'bearer'Token type
expires_innumberToken lifetime in seconds
refresh_tokenstringToken for obtaining new access tokens

getOAuthUserInfo()

Returns the email address and IBAN of the authenticated user. Requires OAuth2 Bearer token with scope account.info:basic. Signature
getOAuthUserInfo(): Promise<OauthGetUserInfoResponse>
PropertyValue
HTTP methodGET
Endpointoauth/userinfo
Auth requiredYes (OAuth2 Bearer)

createOAuthFastApiKey(params)

Creates a Fast API key with specified permissions and IP allowlist. Requires OAuth2 Bearer token with scope account.fast-api-key:write. Signature
createOAuthFastApiKey(
  params: OauthCreateFastApiKeyParams
): Promise<OauthCreateFastApiKeyResponse>
api_key_name
string
required
Name for the new key (max 32 characters).
ip_allowlist
string[]
required
Array of IP addresses or CIDR ranges allowed to use this key.
permissions
object
required
Object of boolean permission flags: export_data, funds_add, funds_earn, funds_query, funds_withdraw, ledger_query, trades_close, trades_modify, trades_query_closed, trades_query_open.
nonce_window
number
Nonce tolerance window in milliseconds.
query_from
number
Unix timestamp — key can only query data from this time.
query_to
number
Unix timestamp — key can only query data up to this time.
valid_until
number
Unix timestamp after which the key expires.
PropertyValue
HTTP methodPOST
Endpointoauth/fast-api-key
Auth requiredYes (OAuth2 Bearer)
The api_key and secret fields are only returned on creation. Store them securely — they cannot be retrieved again.
import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({ /* OAuth credentials */ });

const key = await client.createOAuthFastApiKey({
  api_key_name: 'my-read-only-key',
  ip_allowlist: ['203.0.113.0/24'],
  permissions: {
    funds_query: true,
    ledger_query: true,
    trades_query_open: true,
    trades_query_closed: true,
  },
});

// Store these securely — not retrievable again
console.log('API Key:', key.result.api_key);
console.log('Secret:', key.result.secret);

updateOAuthFastApiKey(params)

Updates an existing Fast API key. Requires OAuth2 Bearer token with scope account.fast-api-key:write. Signature
updateOAuthFastApiKey(params: OauthUpdateFastApiKeyParams): Promise<{ result: boolean }>
api_key_name
string
required
Current name of the key to update (max 32 characters).
new_api_key_name
string
New name for the key (max 32 characters).
ip_allowlist
string[]
required
Updated IP allowlist.
permissions
object
required
Updated permission flags (same shape as createOAuthFastApiKey).
nonce_window
number
Updated nonce window.
query_from
number
Updated query start timestamp.
query_to
number
Updated query end timestamp.
valid_until
number
Updated expiry timestamp.
PropertyValue
HTTP methodPUT
Endpointoauth/fast-api-key
Auth requiredYes (OAuth2 Bearer)

deleteOAuthFastApiKey(params)

Deletes a Fast API key. Requires OAuth2 Bearer token with scope account.fast-api-key:write. Signature
deleteOAuthFastApiKey(params: {
  api_key_name: string;
}): Promise<{ result: boolean }>
api_key_name
string
required
Name of the key to delete (max 32 characters).
PropertyValue
HTTP methodDELETE
Endpointoauth/fast-api-key
Auth requiredYes (OAuth2 Bearer)

listOAuthFastApiKeys()

List all Fast API keys associated with the OAuth client. Requires OAuth2 Bearer token with scope account.fast-api-key:read. Signature
listOAuthFastApiKeys(): Promise<{ result: OauthFastApiKey[] }>
PropertyValue
HTTP methodGET
Endpointoauth/fast-api-keys
Auth requiredYes (OAuth2 Bearer)
ResponseOauthFastApiKey[]
FieldTypeDescription
api_key_namestringKey name
idstringUnique key identifier
created_timestringCreation timestamp
modified_timestringLast modification timestamp
ip_allowliststring[]Allowed IP addresses
permissionsobjectPermission flags
valid_untilnumberExpiry Unix timestamp
last_usednumberLast usage Unix timestamp

Full Deposit + Withdrawal Flow

import { SpotClient } from '@siebly/kraken-api';

const client = new SpotClient({
  apiKey: process.env.API_SPOT_KEY,
  apiSecret: process.env.API_SPOT_SECRET,
});

// 1. Find available deposit methods for BTC
const methods = await client.getDepositMethods({ asset: 'XBT' });
const method = methods.result[0].method; // e.g. 'Bitcoin'

// 2. Get a deposit address
const addresses = await client.getDepositAddresses({
  asset: 'XBT',
  method,
  new: false, // reuse existing address
});
const depositAddress = addresses.result[0].address;
console.log('Send BTC to:', depositAddress);

// 3. Monitor deposit status
const status = await client.getDepositsStatus({ asset: 'XBT', method });
console.log('Recent deposits:', status.result);

Build docs developers (and LLMs) love