Skip to content

Python SDK Reference

MethodCategoryReturnsPage
Keypair.generate()KeypairKeypairKeypair
Keypair.from_secret_key()KeypairKeypairKeypair
Keypair.from_mnemonic()KeypairKeypairKeypair
get_chain_identifier()ChainstrChain & State
get_server_version()ChainstrChain & State
get_protocol_version()ChainintChain & State
get_architecture_version()ChainintChain & State
get_embedding_dim()ChainintChain & State
get_model_min_stake()ChainintChain & State
check_api_version()ChainNoneChain & State
get_object()ObjectsObjectRefChain & State
get_object_with_version()ObjectsObjectRefChain & State
get_balance()ObjectsfloatChain & State
list_owned_objects()Objectslist[ObjectRef]Chain & State
get_latest_system_state()SystemSystemStateChain & State
get_epoch()SystemEpochInfoChain & State
get_latest_checkpoint()CheckpointsCheckpointSummaryChain & State
get_checkpoint_summary()CheckpointsCheckpointSummaryChain & State
wait_for_next_epoch()EpochintChain & State
get_next_epoch_timestamp()EpochintChain & State
get_following_epoch_timestamp()EpochintChain & State
list_targets()TargetsListTargetsResponseTargets
get_targets()Targetslist[Target]Targets
get_model_manifests()Targetslist[ModelManifest]Targets
fetch_model()TargetsbytesTargets
fetch_submission_data()TargetsbytesTargets
execute_transaction()TransactionsTransactionEffectsTransactions
simulate_transaction()TransactionsTransactionEffectsTransactions
get_transaction()TransactionsTransactionEffectsTransactions
create_model()ModelsstrScoring & Admin
commit_model()ModelsNoneScoring & Admin
reveal_model()ModelsNoneScoring & Admin
deactivate_model()ModelsNoneScoring & Admin
set_model_commission_rate()ModelsNoneScoring & Admin
report_model()ModelsNoneScoring & Admin
undo_report_model()ModelsNoneScoring & Admin
submit_data()SubmissionsNoneScoring & Admin
claim_rewards()SubmissionsNoneScoring & Admin
report_submission()SubmissionsNoneScoring & Admin
undo_report_submission()SubmissionsNoneScoring & Admin
score()ScoringScoreResultScoring & Admin
transfer_coin()TransfersNoneScoring & Admin
transfer_objects()TransfersNoneScoring & Admin
pay_coins()TransfersNoneScoring & Admin
request_faucet()AdminFaucetResponseScoring & Admin
add_stake()StakingNoneScoring & Admin
withdraw_stake()StakingNoneScoring & Admin
add_stake_to_model()StakingNoneScoring & Admin
pip install soma-sdk

Use named presets for common networks:

from soma_sdk import SomaClient
client = await SomaClient(chain="testnet") # testnet with faucet
client = await SomaClient(chain="localnet") # local dev with all services

Or provide explicit URLs:

client = await SomaClient(
rpc_url="http://127.0.0.1:9000",
scoring_url="http://127.0.0.1:9124",
faucet_url="http://127.0.0.1:9123",
)
ParameterTypeRequiredDefaultDescription
rpc_urlstrNo-gRPC endpoint for the SOMA fullnode
chainstrNoNoneNetwork preset ("testnet" or "localnet")
scoring_urlstrNoNoneScoring service URL (required for score())
admin_urlstrNoNoneAdmin endpoint (required for advance_epoch())
faucet_urlstrNoNoneFaucet endpoint (required for request_faucet())

Provide either chain or rpc_url, not both. The constructor is async. Use await to initialize the client.

All query and transaction methods are async. Use asyncio.run() for scripts:

import asyncio
from soma_sdk import SomaClient
async def main():
client = await SomaClient(chain="localnet")
balance = await client.get_balance("0x1234...")
print(f"Balance: {balance} SOMA")
asyncio.run(main())

These methods are available on SomaClient without instantiation.

Encrypt data with AES-256-CTR (zero IV). If no key is provided, one is generated.

encrypted, key_base58 = SomaClient.encrypt_weights(data)
encrypted_with_key, _ = SomaClient.encrypt_weights(data, key=my_key)
ParameterTypeRequiredDefaultDescription
databytesYes-Raw data to encrypt
keybytes | strNoNone32-byte AES key as bytes or Base58 string (generated if omitted)

Returns: tuple[bytes, str]. (encrypted_bytes, key_base58).

Decrypt data encrypted with encrypt_weights.

decrypted = SomaClient.decrypt_weights(encrypted, key_hex)
ParameterTypeRequiredDefaultDescription
databytesYes-Encrypted data
keybytes | strYes-AES key (bytes or Base58 string)

Returns: bytes

Compute a Blake2b-256 hash of data.

digest = SomaClient.commitment(data) # Base58 string
ParameterTypeRequiredDefaultDescription
databytesYes-Data to hash

Returns: str. Base58-encoded Blake2b-256 hash.

Convert SOMA to shannons (1 SOMA = 1,000,000,000 shannons).

shannons = SomaClient.to_shannons(1.5) # 1_500_000_000

Convert shannons to SOMA.

soma = SomaClient.to_soma(1_500_000_000) # 1.5