Interaction¶
cyhole.helius.Helius
¶
Helius(
api_key: str,
network: HeliusNetwork = HeliusNetwork.MAINNET,
headers: Any | None = None,
)
Bases: Interaction
flowchart TD
cyhole.helius.Helius[Helius]
cyhole.core.interaction.Interaction[Interaction]
cyhole.core.interaction.Interaction --> cyhole.helius.Helius
click cyhole.helius.Helius href "" "cyhole.helius.Helius"
click cyhole.core.interaction.Interaction href "" "cyhole.core.interaction.Interaction"
Class used to connect Helius API.
Helius provides enhanced Solana RPC infrastructure including the Digital Asset Standard (DAS) API — a unified interface for querying on-chain NFTs, compressed NFTs (cNFTs), fungible tokens, and inscriptions.
All DAS endpoints require an API key obtained from the Helius Dashboard. The key is appended as a URL query parameter on every request.
Example — sync
from cyhole.helius import Helius
helius = Helius(api_key="your-api-key")
response = helius.client.post_get_asset("4ZkS7zADmEFnkLPMHqJfPvHDN8oqfPjqDFGEQHiqPbEz")
print(response.result.id)
Example — async
import asyncio
from cyhole.helius import Helius
helius = Helius(api_key="your-api-key")
async def main():
async with helius.async_client as client:
response = await client.post_get_asset("4ZkS7zADmEFnkLPMHqJfPvHDN8oqfPjqDFGEQHiqPbEz")
print(response.result.ownership.owner)
asyncio.run(main())
Source code in src/cyhole/helius/interaction.py
73 74 75 76 77 78 79 80 81 82 | |
_post_get_asset
¶
_post_get_asset(
sync: Literal[True],
asset_id: str,
options: PostGetAssetOptions | None = None,
) -> PostGetAssetResponse
_post_get_asset(
sync: Literal[False],
asset_id: str,
options: PostGetAssetOptions | None = None,
) -> Coroutine[None, None, PostGetAssetResponse]
_post_get_asset(
sync: bool,
asset_id: str,
options: PostGetAssetOptions | None = None,
) -> (
PostGetAssetResponse
| Coroutine[None, None, PostGetAssetResponse]
)
This function refers to the getAsset DAS API endpoint.
Retrieves the full on-chain record for a single digital asset (NFT, cNFT,
or fungible token) identified by its mint address. The response includes
ownership, royalty, compression state, content metadata, and optional
fungible or inscription data depending on the options provided.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
asset_id
|
str
|
the mint address of the asset to retrieve. |
required |
options
|
PostGetAssetOptions | None
|
optional display flags — use |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetResponse |
PostGetAssetResponse | Coroutine[None, None, PostGetAssetResponse]
|
full asset record wrapped in a JSON-RPC 2.0 envelope.
Access the asset data via |
Source code in src/cyhole/helius/interaction.py
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | |
_post_get_asset_batch
¶
_post_get_asset_batch(
sync: Literal[True], ids: list[str]
) -> PostGetAssetBatchResponse
_post_get_asset_batch(
sync: Literal[False], ids: list[str]
) -> Coroutine[None, None, PostGetAssetBatchResponse]
_post_get_asset_batch(
sync: bool, ids: list[str]
) -> (
PostGetAssetBatchResponse
| Coroutine[None, None, PostGetAssetBatchResponse]
)
This function refers to the getAssetBatch DAS API endpoint.
Retrieves up to 1,000 digital assets in a single request. Useful for
bulk enrichment of mint address lists (e.g. wallet portfolio snapshots).
Items in the result list follow the same schema as a single getAsset call.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
ids
|
list[str]
|
list of mint addresses to retrieve (max 1,000 items). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetBatchResponse |
PostGetAssetBatchResponse | Coroutine[None, None, PostGetAssetBatchResponse]
|
list of asset records wrapped in a JSON-RPC 2.0 envelope.
Access the list via |
Source code in src/cyhole/helius/interaction.py
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | |
_post_get_asset_proof
¶
_post_get_asset_proof(
sync: Literal[True], asset_id: str
) -> PostGetAssetProofResponse
_post_get_asset_proof(
sync: Literal[False], asset_id: str
) -> Coroutine[None, None, PostGetAssetProofResponse]
_post_get_asset_proof(
sync: bool, asset_id: str
) -> (
PostGetAssetProofResponse
| Coroutine[None, None, PostGetAssetProofResponse]
)
This function refers to the getAssetProof DAS API endpoint.
Returns the Merkle proof required to execute on-chain operations (transfer, burn, delegate) on a compressed NFT (cNFT). The proof must be passed to the Bubblegum program alongside the instruction. Only applicable to cNFTs; regular NFTs do not require a proof.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
asset_id
|
str
|
the mint address of the compressed NFT. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetProofResponse |
PostGetAssetProofResponse | Coroutine[None, None, PostGetAssetProofResponse]
|
Merkle proof data wrapped in a JSON-RPC 2.0 envelope.
Access the proof via |
Source code in src/cyhole/helius/interaction.py
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | |
_post_get_asset_proof_batch
¶
_post_get_asset_proof_batch(
sync: Literal[True], ids: list[str]
) -> PostGetAssetProofBatchResponse
_post_get_asset_proof_batch(
sync: Literal[False], ids: list[str]
) -> Coroutine[None, None, PostGetAssetProofBatchResponse]
_post_get_asset_proof_batch(
sync: bool, ids: list[str]
) -> (
PostGetAssetProofBatchResponse
| Coroutine[None, None, PostGetAssetProofBatchResponse]
)
This function refers to the getAssetProofBatch DAS API endpoint.
Fetches Merkle proofs for multiple compressed NFTs in a single round-trip. The response is a mapping of asset mint address → proof object, making it straightforward to look up the proof for each cNFT in a batch transfer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
ids
|
list[str]
|
list of compressed NFT mint addresses. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetProofBatchResponse |
PostGetAssetProofBatchResponse | Coroutine[None, None, PostGetAssetProofBatchResponse]
|
dict of proofs keyed by asset ID,
wrapped in a JSON-RPC 2.0 envelope. Access via |
Source code in src/cyhole/helius/interaction.py
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | |
_post_get_assets_by_owner
¶
_post_get_assets_by_owner(
sync: Literal[True], body: PostGetAssetsByOwnerBody
) -> PostGetAssetsByOwnerResponse
_post_get_assets_by_owner(
sync: Literal[False], body: PostGetAssetsByOwnerBody
) -> Coroutine[None, None, PostGetAssetsByOwnerResponse]
_post_get_assets_by_owner(
sync: bool, body: PostGetAssetsByOwnerBody
) -> (
PostGetAssetsByOwnerResponse
| Coroutine[None, None, PostGetAssetsByOwnerResponse]
)
This function refers to the getAssetsByOwner DAS API endpoint.
Returns all digital assets (NFTs, cNFTs, fungible tokens) held by a given wallet. Supports pagination, sorting, and display options such as native SOL balance and fungible token data. Useful for building wallet portfolio views.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
body
|
PostGetAssetsByOwnerBody
|
request body — see |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetsByOwnerResponse |
PostGetAssetsByOwnerResponse | Coroutine[None, None, PostGetAssetsByOwnerResponse]
|
paginated asset list wrapped in a JSON-RPC 2.0 envelope.
Access via |
Source code in src/cyhole/helius/interaction.py
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | |
_post_get_assets_by_group
¶
_post_get_assets_by_group(
sync: Literal[True], body: PostGetAssetsByGroupBody
) -> PostGetAssetsByGroupResponse
_post_get_assets_by_group(
sync: Literal[False], body: PostGetAssetsByGroupBody
) -> Coroutine[None, None, PostGetAssetsByGroupResponse]
_post_get_assets_by_group(
sync: bool, body: PostGetAssetsByGroupBody
) -> (
PostGetAssetsByGroupResponse
| Coroutine[None, None, PostGetAssetsByGroupResponse]
)
This function refers to the getAssetsByGroup DAS API endpoint.
Returns all assets that belong to a specific collection (or other grouping key).
The most common usage is to supply group_key = "collection" and
group_value = "<collection_mint_address>" to enumerate every NFT in a collection.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
body
|
PostGetAssetsByGroupBody
|
request body — see |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetsByGroupResponse |
PostGetAssetsByGroupResponse | Coroutine[None, None, PostGetAssetsByGroupResponse]
|
paginated asset list wrapped in a JSON-RPC 2.0 envelope.
Access via |
Source code in src/cyhole/helius/interaction.py
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | |
_post_get_assets_by_creator
¶
_post_get_assets_by_creator(
sync: Literal[True], body: PostGetAssetsByCreatorBody
) -> PostGetAssetsByCreatorResponse
_post_get_assets_by_creator(
sync: Literal[False], body: PostGetAssetsByCreatorBody
) -> Coroutine[None, None, PostGetAssetsByCreatorResponse]
_post_get_assets_by_creator(
sync: bool, body: PostGetAssetsByCreatorBody
) -> (
PostGetAssetsByCreatorResponse
| Coroutine[None, None, PostGetAssetsByCreatorResponse]
)
This function refers to the getAssetsByCreator DAS API endpoint.
Returns all digital assets created by a given wallet address. Optionally
filter to only verified creator entries using only_verified = True, which
excludes assets where the creator has not signed the metadata.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
body
|
PostGetAssetsByCreatorBody
|
request body — see |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetsByCreatorResponse |
PostGetAssetsByCreatorResponse | Coroutine[None, None, PostGetAssetsByCreatorResponse]
|
paginated asset list wrapped in a JSON-RPC 2.0 envelope.
Access via |
Source code in src/cyhole/helius/interaction.py
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | |
_post_get_assets_by_authority
¶
_post_get_assets_by_authority(
sync: Literal[True], body: PostGetAssetsByAuthorityBody
) -> PostGetAssetsByAuthorityResponse
_post_get_assets_by_authority(
sync: Literal[False], body: PostGetAssetsByAuthorityBody
) -> Coroutine[
None, None, PostGetAssetsByAuthorityResponse
]
_post_get_assets_by_authority(
sync: bool, body: PostGetAssetsByAuthorityBody
) -> (
PostGetAssetsByAuthorityResponse
| Coroutine[
None, None, PostGetAssetsByAuthorityResponse
]
)
This function refers to the getAssetsByAuthority DAS API endpoint.
Returns all assets whose update authority matches the given address. Update authority controls the ability to modify on-chain metadata, so this endpoint is useful for discovering all assets managed by a specific program or wallet (e.g. all NFTs minted under a particular candy machine).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
body
|
PostGetAssetsByAuthorityBody
|
request body — see |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetAssetsByAuthorityResponse |
PostGetAssetsByAuthorityResponse | Coroutine[None, None, PostGetAssetsByAuthorityResponse]
|
paginated asset list wrapped in a JSON-RPC 2.0 envelope.
Access via |
Source code in src/cyhole/helius/interaction.py
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 | |
_post_search_assets
¶
_post_search_assets(
sync: Literal[True], body: PostSearchAssetsBody
) -> PostSearchAssetsResponse
_post_search_assets(
sync: Literal[False], body: PostSearchAssetsBody
) -> Coroutine[None, None, PostSearchAssetsResponse]
_post_search_assets(
sync: bool, body: PostSearchAssetsBody
) -> (
PostSearchAssetsResponse
| Coroutine[None, None, PostSearchAssetsResponse]
)
This function refers to the searchAssets DAS API endpoint.
Performs a flexible, multi-criteria search across all digital assets indexed by Helius. Filters can be combined freely: narrow by owner, creator, collection, token type, compression state, or burn status. All fields in the request body are optional — omitting a field means no constraint is applied for that dimension.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
body
|
PostSearchAssetsBody
|
search body — see |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostSearchAssetsResponse |
PostSearchAssetsResponse | Coroutine[None, None, PostSearchAssetsResponse]
|
paginated asset list wrapped in a JSON-RPC 2.0 envelope.
Access via |
Source code in src/cyhole/helius/interaction.py
324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 | |
_post_get_signatures_for_asset
¶
_post_get_signatures_for_asset(
sync: Literal[True],
asset_id: str,
page: int | None = None,
limit: int | None = None,
) -> PostGetSignaturesForAssetResponse
_post_get_signatures_for_asset(
sync: Literal[False],
asset_id: str,
page: int | None = None,
limit: int | None = None,
) -> Coroutine[
None, None, PostGetSignaturesForAssetResponse
]
_post_get_signatures_for_asset(
sync: bool,
asset_id: str,
page: int | None = None,
limit: int | None = None,
) -> (
PostGetSignaturesForAssetResponse
| Coroutine[
None, None, PostGetSignaturesForAssetResponse
]
)
This function refers to the getSignaturesForAsset DAS API endpoint.
Returns the transaction history for a digital asset, including both regular
NFTs and compressed NFTs (cNFTs). Each item in the result is a two-element
list of [signature, transaction_type] (e.g. ["5abc...", "Transfer"]).
Useful for auditing provenance or tracking the ownership history of an asset.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
asset_id
|
str
|
the mint address of the asset. |
required |
page
|
int | None
|
page number for pagination (default 1). |
None
|
limit
|
int | None
|
number of signatures per page, max 1,000 (default 1,000). |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
PostGetSignaturesForAssetResponse |
PostGetSignaturesForAssetResponse | Coroutine[None, None, PostGetSignaturesForAssetResponse]
|
paginated signature list wrapped in a
JSON-RPC 2.0 envelope. Access via |
Source code in src/cyhole/helius/interaction.py
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 | |
_post_get_nft_editions
¶
_post_get_nft_editions(
sync: Literal[True],
mint: str,
page: int | None = None,
limit: int | None = None,
) -> PostGetNftEditionsResponse
_post_get_nft_editions(
sync: Literal[False],
mint: str,
page: int | None = None,
limit: int | None = None,
) -> Coroutine[None, None, PostGetNftEditionsResponse]
_post_get_nft_editions(
sync: bool,
mint: str,
page: int | None = None,
limit: int | None = None,
) -> (
PostGetNftEditionsResponse
| Coroutine[None, None, PostGetNftEditionsResponse]
)
This function refers to the getNftEditions DAS API endpoint.
Returns all print editions derived from a given master edition NFT. Each item contains the edition mint address, edition address (PDA), and sequential edition number. The response also includes the master edition address, current supply, and optional max supply.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
mint
|
str
|
the master edition mint address. |
required |
page
|
int | None
|
page number for pagination (default 1). |
None
|
limit
|
int | None
|
number of editions per page, max 1,000 (default 1,000). |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
PostGetNftEditionsResponse |
PostGetNftEditionsResponse | Coroutine[None, None, PostGetNftEditionsResponse]
|
paginated edition list wrapped in a JSON-RPC 2.0 envelope.
Access via |
Source code in src/cyhole/helius/interaction.py
389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 | |
_post_get_token_accounts
¶
_post_get_token_accounts(
sync: Literal[True], body: PostGetTokenAccountsBody
) -> PostGetTokenAccountsResponse
_post_get_token_accounts(
sync: Literal[False], body: PostGetTokenAccountsBody
) -> Coroutine[None, None, PostGetTokenAccountsResponse]
_post_get_token_accounts(
sync: bool, body: PostGetTokenAccountsBody
) -> (
PostGetTokenAccountsResponse
| Coroutine[None, None, PostGetTokenAccountsResponse]
)
This function refers to the getTokenAccounts DAS API endpoint.
Returns SPL token accounts filtered by mint address, owner wallet, or both.
Each account record includes the token balance (amount), whether the account
is frozen, and any delegated amount. Provide at least one of mint or owner
to narrow the result set.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
body
|
PostGetTokenAccountsBody
|
query body — see |
required |
Returns:
| Name | Type | Description |
|---|---|---|
PostGetTokenAccountsResponse |
PostGetTokenAccountsResponse | Coroutine[None, None, PostGetTokenAccountsResponse]
|
paginated token account list wrapped in a
JSON-RPC 2.0 envelope. Access via |
Source code in src/cyhole/helius/interaction.py
422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 | |
_post_get_transfers_by_address
¶
_post_get_transfers_by_address(
sync: Literal[True],
address: str,
body: PostGetTransfersByAddressBody | None = None,
) -> PostGetTransfersByAddressResponse
_post_get_transfers_by_address(
sync: Literal[False],
address: str,
body: PostGetTransfersByAddressBody | None = None,
) -> Coroutine[
None, None, PostGetTransfersByAddressResponse
]
_post_get_transfers_by_address(
sync: bool,
address: str,
body: PostGetTransfersByAddressBody | None = None,
) -> (
PostGetTransfersByAddressResponse
| Coroutine[
None, None, PostGetTransfersByAddressResponse
]
)
This function refers to the getTransfersByAddress Helius RPC endpoint.
Returns parsed, human-readable token and native SOL transfer records for a
wallet owner address, suitable for ledgers, payment tracking, and balance
reconciliation. Results can be narrowed by counterparty, direction, mint,
amount/time/slot ranges and paginated via pagination_token.
The endpoint is a Helius-exclusive feature (not part of standard Solana RPC), requires a Developer plan or higher, costs 10 credits per request, and returns at most the most recent 1 year of transfer history. Failed transactions and hidden SOL balance-change movements are not included.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
address
|
str
|
base58-encoded wallet owner address to query. Must be the owner wallet, not an associated token account (ATA). |
required |
body
|
PostGetTransfersByAddressBody | None
|
optional configuration object — see
|
None
|
Returns:
| Name | Type | Description |
|---|---|---|
PostGetTransfersByAddressResponse |
PostGetTransfersByAddressResponse | Coroutine[None, None, PostGetTransfersByAddressResponse]
|
paginated transfer rows wrapped in a
JSON-RPC 2.0 envelope. Access the rows via |
Source code in src/cyhole/helius/interaction.py
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 | |
_post_get_transactions_for_address
¶
_post_get_transactions_for_address(
sync: Literal[True],
address: str,
body: PostGetTransactionsForAddressBody | None = None,
) -> PostGetTransactionsForAddressResponse
_post_get_transactions_for_address(
sync: Literal[False],
address: str,
body: PostGetTransactionsForAddressBody | None = None,
) -> Coroutine[
None, None, PostGetTransactionsForAddressResponse
]
_post_get_transactions_for_address(
sync: bool,
address: str,
body: PostGetTransactionsForAddressBody | None = None,
) -> (
PostGetTransactionsForAddressResponse
| Coroutine[
None, None, PostGetTransactionsForAddressResponse
]
)
This function refers to the getTransactionsForAddress Helius RPC endpoint.
Returns the transaction history for any Solana account with advanced
filtering (time, slot, signature, success/failure status, token-account
inclusion), bidirectional sorting (asc / desc), and cursor-based
pagination. Unlike getSignaturesForAddress, this endpoint can optionally
return the full transaction payload in a single call and can include
activity on token accounts owned by the queried wallet via
filters.token_accounts.
The endpoint is a Helius-exclusive feature (not part of standard Solana RPC),
requires a Developer plan or higher, costs 50 credits per request and
returns up to 100 full transactions or 1,000 signatures per page. The
token_accounts filter does not see transactions prior to December 2022;
devnet retention is limited to 2 weeks while mainnet retention is unlimited.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sync
|
bool
|
if |
required |
address
|
str
|
base58-encoded account address to query (wallet, program, mint, pool, or token account). |
required |
body
|
PostGetTransactionsForAddressBody | None
|
optional configuration object — see
|
None
|
Returns:
| Name | Type | Description |
|---|---|---|
PostGetTransactionsForAddressResponse |
PostGetTransactionsForAddressResponse | Coroutine[None, None, PostGetTransactionsForAddressResponse]
|
paginated transaction list wrapped
in a JSON-RPC 2.0 envelope. Access the rows via |
Source code in src/cyhole/helius/interaction.py
499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 | |