Skip to main content

Wallets

GraphQL Endpoint

https://platform.enjin.io/graphql

The Enjin Platform exposes three complementary read surfaces for wallets:

  • GetAccount / GetAccounts — read any on-chain account by address (ENJ balance, held tokens, nonce).
  • GetManagedWallet / GetManagedWallets — read platform-managed wallets (the keypairs your application creates via CreateManagedWallet).
  • GetLinkedWallet — read a user wallet linked to your account via the wallet linking flow (CreateLinkingCode).

VerifyMessage lets you cryptographically verify that a given signature belongs to a given address — useful for signed-message ownership proofs in custom signing flows.

GetAccount

Returns a single chain account. The response includes the ENJ balance (in the smallest unit — divide by 1018 for ENJ) and a flat list of tokens the account holds.

query GetAccount {
GetAccount(
network: ENJIN
chain: MATRIX
address: "efRC9jw5LeZFqmaWBBDxZRTyaLP9dLAqixy32tSnqW9wCsb6y"
) {
id
address
nonce
balance
tokens {
id
tokenId
isNonFungible
collection {
id
}
metadata {
name
}
}
}
}

GetAccounts

The batched form of GetAccount. Pass a list of addresses and the platform returns an Account per entry.

query GetAccounts {
GetAccounts(
network: ENJIN
chain: MATRIX
addresses: [
"efRC9jw5LeZFqmaWBBDxZRTyaLP9dLAqixy32tSnqW9wCsb6y"
"efUfmhm2rcTtVr4ajneB71qbfDZ1EkyYW7xRc6fhuRh3Tg4L1"
]
) {
address
balance
nonce
}
}

GetManagedWallet

Looks up a platform-managed wallet by either externalId (the string you set when calling CreateManagedWallet) or publicKey (the hex public key). Returns the wallet's public key and externalId — pass either back as recipient on mint/transfer actions or as signerAddress / signerExternalId on CreateTransaction.

query GetManagedWallet {
GetManagedWallet(
network: ENJIN
chain: MATRIX
externalId: "e73f9f38-6832-4822-922b-b9225245ba24"
) {
publicKey
externalId
}
}

GetManagedWallets

Returns a paginated list of managed wallets. Pagination is cursor-based — pass the previous response's nextCursor to fetch the next page; a null nextCursor means there are no more.

You can optionally filter to specific publicKeys or externalIds.

query GetManagedWallets {
GetManagedWallets(
network: ENJIN
chain: MATRIX
limit: 15
) {
data {
publicKey
externalId
}
perPage
nextCursor
previousCursor
}
}

GetLinkedWallet

Returns a wallet that a user has linked to your Enjin Platform account by approving a linking code in their Enjin Wallet app. Look it up by the idempotencyKey you set when creating the linking code, or by the wallet's address (the two arguments are mutually exclusive).

Returns null when no linked wallet matches — the user hasn't approved the linking code yet, or they've since disconnected your application from their Enjin Wallet app. See Sending Wallet Requests for the full flow.

query GetLinkedWallet($idempotencyKey: String) {
GetLinkedWallet(idempotencyKey: $idempotencyKey) {
publicKey
idempotencyKey
}
}

Variables:

{
"idempotencyKey": "player-123"
}

Pass the returned publicKey as signerAddress on CreateTransaction to send a transaction request to the user's Enjin Wallet app.

VerifyMessage

Cryptographically verifies that signature was produced by the holder of publicKey over message. Returns true or false. Useful for signed-message ownership proofs — for example, prompting a user's wallet to sign a unique challenge string so your backend can confirm they control the address.

query VerifyMessage {
VerifyMessage(
network: ENJIN
chain: MATRIX
publicKey: "0xded3c8a93e4a4b3a5e8f3c9a2d1b6f0e7c8a9b0d1e2f3a4b5c6d7e8f9a0b1c2d"
signature: "0x8958f002f9513256fa329fa92441d39adc59e3a19165aeeb343acd72b7f6a..."
message: "Sign in to MyGame at 2026-05-25T14:32:00Z"
)
}