GetBalance gRPC Method
Parameters
owner
string
REQUIRED
Loading...
coin_type
string
REQUIRED
Loading...
Returns
balance
object
Loading...
coinType
string
Loading...
balance
string
Loading...
Request
1grpcurl -proto ./sui/rpc/v2beta2/live_data_service.proto -H "x-token: abcde123456789" -d '{2"owner": "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c",3"coin_type": "0x2::sui::SUI"4}' docs-demo.sui-mainnet.quiknode.pro:9000 sui.rpc.v2beta2.LiveDataService/GetBalance
1grpcurl -proto ./sui/rpc/v2beta2/live_data_service.proto -H "x-token: abcde123456789" -d '{2"owner": "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c",3"coin_type": "0x2::sui::SUI"4}' docs-demo.sui-mainnet.quiknode.pro:9000 sui.rpc.v2beta2.LiveDataService/GetBalance
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"log"9"time"1011"google.golang.org/grpc"12"google.golang.org/grpc/credentials"13"google.golang.org/protobuf/encoding/protojson"1415pb "sui-grpc/sui/rpc/v2beta2" // Your Generated .pb.go files path16)1718// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token19// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678920// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}21// token will be : abcde1234567892223var (24token = "YOUR_TOKEN_NUMBER"25endpoint = "YOUR_QN_ENDPOINT:9000"26)2728// Auth structure for x-token29type auth struct {30token string31}3233func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {34return map[string]string{"x-token": a.token}, nil35}36func (a *auth) RequireTransportSecurity() bool {37return true38}3940func main() {41creds := credentials.NewTLS(&tls.Config{})42opts := []grpc.DialOption{43grpc.WithTransportCredentials(creds),44grpc.WithPerRPCCredentials(&auth{token}),45}4647conn, err := grpc.Dial(endpoint, opts...)48if err != nil {49log.Fatalf("Failed to connect: %v", err)50}51defer conn.Close()5253client := pb.NewLiveDataServiceClient(conn)5455owner := "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c"56coinType := "0x2::sui::SUI"5758// Build request with field mask59req := &pb.GetBalanceRequest{60Owner: &owner,61CoinType: &coinType,62}6364ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)65defer cancel()6667resp, err := client.GetBalance(ctx, req)68if err != nil {69log.Fatalf("GetBalance failed: %v", err)70}7172// Pretty print the response73marshaler := protojson.MarshalOptions{74UseProtoNames: true,75EmitUnpopulated: true,76Indent: " ",77}7879jsonBytes, err := marshaler.Marshal(resp)80if err != nil {81log.Fatalf("Failed to marshal: %v", err)82}8384var pretty map[string]interface{}85if err := json.Unmarshal(jsonBytes, &pretty); err != nil {86log.Fatalf("Failed to parse JSON: %v", err)87}8889out, _ := json.MarshalIndent(pretty, "", " ")90fmt.Println(string(out))91}92
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"log"9"time"1011"google.golang.org/grpc"12"google.golang.org/grpc/credentials"13"google.golang.org/protobuf/encoding/protojson"1415pb "sui-grpc/sui/rpc/v2beta2" // Your Generated .pb.go files path16)1718// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token19// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678920// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}21// token will be : abcde1234567892223var (24token = "YOUR_TOKEN_NUMBER"25endpoint = "YOUR_QN_ENDPOINT:9000"26)2728// Auth structure for x-token29type auth struct {30token string31}3233func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {34return map[string]string{"x-token": a.token}, nil35}36func (a *auth) RequireTransportSecurity() bool {37return true38}3940func main() {41creds := credentials.NewTLS(&tls.Config{})42opts := []grpc.DialOption{43grpc.WithTransportCredentials(creds),44grpc.WithPerRPCCredentials(&auth{token}),45}4647conn, err := grpc.Dial(endpoint, opts...)48if err != nil {49log.Fatalf("Failed to connect: %v", err)50}51defer conn.Close()5253client := pb.NewLiveDataServiceClient(conn)5455owner := "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c"56coinType := "0x2::sui::SUI"5758// Build request with field mask59req := &pb.GetBalanceRequest{60Owner: &owner,61CoinType: &coinType,62}6364ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)65defer cancel()6667resp, err := client.GetBalance(ctx, req)68if err != nil {69log.Fatalf("GetBalance failed: %v", err)70}7172// Pretty print the response73marshaler := protojson.MarshalOptions{74UseProtoNames: true,75EmitUnpopulated: true,76Indent: " ",77}7879jsonBytes, err := marshaler.Marshal(resp)80if err != nil {81log.Fatalf("Failed to marshal: %v", err)82}8384var pretty map[string]interface{}85if err := json.Unmarshal(jsonBytes, &pretty); err != nil {86log.Fatalf("Failed to parse JSON: %v", err)87}8889out, _ := json.MarshalIndent(pretty, "", " ")90fmt.Println(string(out))91}92
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';45// Configuration6const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2beta2/live_data_service.proto');78// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token9// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678910// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}11// token will be : abcde1234567891213const endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';14const token = 'abcde123456789';1516// Load protobuf definitions17const packageDefinition = protoLoader.loadSync(PROTO_PATH, {18keepCase: true,19longs: String,20enums: String,21defaults: true,22oneofs: true,23includeDirs: [path.join(__dirname, 'protos/proto')],24});2526const proto = grpc.loadPackageDefinition(packageDefinition) as any;27const LiveDataService = proto.sui.rpc.v2beta2.LiveDataService;2829// Create secure client30const client = new LiveDataService(endpoint, grpc.credentials.createSsl());3132// Add token metadata33const metadata = new grpc.Metadata();34metadata.add('x-token', token);3536// Request payload37const request = {38owner: '0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c',39coin_type: '0x2::sui::SUI',40};4142// Perform gRPC call43client.GetBalance(request, metadata, (err: grpc.ServiceError | null, response: any) => {44if (err) {45console.error('gRPC Error:', {46code: err.code,47message: err.message,48details: err.details,49});50} else {51console.log('GetBalance Response:');52console.log(JSON.stringify(response, null, 2));53}54});55
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';45// Configuration6const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2beta2/live_data_service.proto');78// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token9// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678910// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}11// token will be : abcde1234567891213const endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';14const token = 'abcde123456789';1516// Load protobuf definitions17const packageDefinition = protoLoader.loadSync(PROTO_PATH, {18keepCase: true,19longs: String,20enums: String,21defaults: true,22oneofs: true,23includeDirs: [path.join(__dirname, 'protos/proto')],24});2526const proto = grpc.loadPackageDefinition(packageDefinition) as any;27const LiveDataService = proto.sui.rpc.v2beta2.LiveDataService;2829// Create secure client30const client = new LiveDataService(endpoint, grpc.credentials.createSsl());3132// Add token metadata33const metadata = new grpc.Metadata();34metadata.add('x-token', token);3536// Request payload37const request = {38owner: '0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c',39coin_type: '0x2::sui::SUI',40};4142// Perform gRPC call43client.GetBalance(request, metadata, (err: grpc.ServiceError | null, response: any) => {44if (err) {45console.error('gRPC Error:', {46code: err.code,47message: err.message,48details: err.details,49});50} else {51console.log('GetBalance Response:');52console.log(JSON.stringify(response, null, 2));53}54});55
1import grpc2import json3from google.protobuf.json_format import MessageToDict4from sui.rpc.v2beta2 import live_data_service_pb2, live_data_service_pb2_grpc567def get_balance():89# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token10# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678911# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be : abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = live_data_service_pb2_grpc.LiveDataServiceStub(channel)1920owner = "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c"21coin_type = "0x2::sui::SUI"2223request = live_data_service_pb2.GetBalanceRequest(24owner=owner,25coin_type=coin_type26)2728metadata = [("x-token", token)]2930return stub.GetBalance(request, metadata=metadata)313233def parse_response_to_json(response):34return json.dumps(35MessageToDict(response, preserving_proto_field_name=True),36indent=237)383940def main():41try:42response = get_balance()43print(parse_response_to_json(response))44except grpc.RpcError as e:45print(f"{e.code().name}: {e.details()}")464748if __name__ == "__main__":49main()50
1import grpc2import json3from google.protobuf.json_format import MessageToDict4from sui.rpc.v2beta2 import live_data_service_pb2, live_data_service_pb2_grpc567def get_balance():89# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token10# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678911# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be : abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = live_data_service_pb2_grpc.LiveDataServiceStub(channel)1920owner = "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c"21coin_type = "0x2::sui::SUI"2223request = live_data_service_pb2.GetBalanceRequest(24owner=owner,25coin_type=coin_type26)2728metadata = [("x-token", token)]2930return stub.GetBalance(request, metadata=metadata)313233def parse_response_to_json(response):34return json.dumps(35MessageToDict(response, preserving_proto_field_name=True),36indent=237)383940def main():41try:42response = get_balance()43print(parse_response_to_json(response))44except grpc.RpcError as e:45print(f"{e.code().name}: {e.details()}")464748if __name__ == "__main__":49main()50
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free