Each SDK exposes two layers over the same backend: Easy Mode for fast integration (composition of common calls) and Core API for granular access to the entire real API surface. No SDK invents behavior -- everything is traceable back to the API Reference. See the full API Reference →
All four SDKs also ship self-custody wallet generation and transaction signing, symmetric across languages -- the private key is generated and used locally, never sent to Ishtaran. How self-custody works →
Java
Available now
<dependency>
<groupId>com.ishtaran</groupId>
<artifactId>ishtaran-java</artifactId>
<version>0.1.4</version>
</dependency>var client = IshtaranClient.builder()
.apiKey(System.getenv("ISHTARAN_API_KEY"))
.environment(Environment.SANDBOX)
.build();
var balance = client.getBalance(accountId, assetNetworkId);
System.out.println("Available: " + balance.available());Self-custody: wallet & signing
// Wallet generated locally -- the private key never leaves this process.
var generated = WalletFactory.generate();
var registered = client.wallets().register(applicationId, networkId,
DerivationScheme.TRON_BIP44_HARDENED_ACCOUNT,
generated.wallet().accountExtendedPublicKey(), idempotencyKey);
// Signing also happens locally, against a hash Ishtaran computed and verifies.
var signature = generated.signer().sign(0, canonicalHash);Development install (unreleased changes)
For local development against an unreleased change -- Maven Central is the primary path above.
git clone https://github.com/taylorjeftedasilva/ishtaran-java.git
cd ishtaran-java && mvn installNode.js / TypeScript
Available now
npm install @ishtaran/sdkimport { IshtaranClient, Environment } from '@ishtaran/sdk';
const client = IshtaranClient.create({
apiKey: process.env.ISHTARAN_API_KEY,
environment: Environment.Sandbox,
});
const balance = await client.getBalance(accountId, assetNetworkId);
console.log('Available:', balance.available);Self-custody: wallet & signing
import { wallet, DerivationScheme } from '@ishtaran/sdk';
// Wallet generated locally -- the private key never leaves this process.
const generated = wallet.generate();
const registered = await client.wallets.register(
applicationId, networkId, DerivationScheme.TRON_BIP44_HARDENED_ACCOUNT,
generated.wallet.accountExtendedPublicKey, idempotencyKey,
);
// Signing also happens locally, against a hash Ishtaran computed and verifies.
const signature = generated.signer.sign(0, canonicalHash);Development install (unreleased changes)
For local development against an unreleased change -- npm is the primary path above.
npm install github:taylorjeftedasilva/ishtaran-nodePython
Available now
pip install ishtaranfrom ishtaran import IshtaranClient, Environment
client = IshtaranClient.create(
api_key=os.environ["ISHTARAN_API_KEY"],
environment=Environment.SANDBOX,
)
balance = client.get_balance(account_id, asset_network_id)
print("Available:", balance.available)Self-custody: wallet & signing
from ishtaran.wallet import generate
from ishtaran.model.enums import DerivationScheme
# Wallet generated locally -- the private key never leaves this process.
generated = generate()
registered = client.wallets.register(
application_id, network_id, DerivationScheme.TRON_BIP44_HARDENED_ACCOUNT,
generated.wallet.account_extended_public_key, idempotency_key,
)
# Signing also happens locally, against a hash Ishtaran computed and verifies.
signature = generated.signer.sign(0, canonical_hash)Development install (unreleased changes)
For local development against an unreleased change -- PyPI is the primary path above.
pip install git+https://github.com/taylorjeftedasilva/ishtaran-python.gitGo
Available now
go get github.com/taylorjeftedasilva/ishtaran-go@v0.1.5client, err := ishtaran.NewClient(
ishtaran.WithAPIKey(os.Getenv("ISHTARAN_API_KEY")),
ishtaran.WithEnvironment(ishtaran.Sandbox),
)
balance, err := client.GetBalance(ctx, accountID, assetNetworkID)
fmt.Println("Available:", balance.Available)Self-custody: wallet & signing
// Wallet generated locally -- the private key never leaves this process.
generated, err := ishtaran.GenerateWallet()
registered, err := client.Wallets.Register(ctx, applicationID, networkID,
ishtaran.DerivationSchemeTronBIP44HardenedAccount,
generated.Wallet.AccountExtendedPublicKey)
// Signing also happens locally, against a hash Ishtaran computed and verifies.
signature, err := generated.Signer.Sign(0, canonicalHash)Development install (unreleased changes)
@latest resolves to the current source through the standard Go module proxy -- use the tagged v0.1.5 above for a stable, reproducible version.
go get github.com/taylorjeftedasilva/ishtaran-go@latestBuilding with an AI agent instead? Ishtaran has an official MCP (Model Context Protocol) server -- knowledge, discovery, planning, and validation for Claude, Codex, Cursor, and any other MCP-compatible client. It never executes financial operations; the SDKs above still do that. How the MCP works →
npx -y @ishtaran/mcp