Skip to main content

Installation

Install the Aries Go SDK using go get:
go get github.com/aries-exchange/go-sdk

Quick Start

package main

import (
    "fmt"
    "log"
    aries "github.com/aries-exchange/go-sdk"
)

func main() {
    // Initialize the client
    client := aries.NewClient(
        aries.WithClientID("your_client_id"),
        aries.WithClientSecret("your_client_secret"),
    )

    // Get account information
    accounts, err := client.Accounts.GetUserAccounts()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(accounts)

    // Place an order
    order, err := client.Orders.PlaceOrder(&aries.OrderRequest{
        Symbol:    "AAPL",
        Quantity:  10,
        Side:      "buy",
        OrderType: "market",
    })
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(order)
}

Authentication

The Go SDK supports OAuth2 authentication:
import aries "github.com/aries-exchange/go-sdk"

client := aries.NewClient(
    aries.WithClientID("your_client_id"),
    aries.WithClientSecret("your_client_secret"),
)

// The SDK handles token management automatically

Making API Calls

Get Market Data

// Search for securities
results, err := client.MarketData.Search("AAPL")
if err != nil {
    log.Fatal(err)
}

// Get equity details
equity, err := client.MarketData.GetEquityDetails("AAPL")
if err != nil {
    log.Fatal(err)
}

Manage Orders

// Place a limit order
order, err := client.Orders.PlaceOrder(&aries.OrderRequest{
    Symbol:     "AAPL",
    Quantity:   10,
    Side:       "buy",
    OrderType:  "limit",
    LimitPrice: 150.00,
})
if err != nil {
    log.Fatal(err)
}

// Cancel an order
err = client.Orders.CancelOrder("order_123")
if err != nil {
    log.Fatal(err)
}

WebSocket Support

Stream real-time data using WebSockets:
import (
    "log"
    aries "github.com/aries-exchange/go-sdk"
)

ws := aries.NewWebSocket(
    aries.WithClientID("your_client_id"),
    aries.WithClientSecret("your_client_secret"),
)

// Subscribe to market data
ws.OnMarketData(func(data *aries.MarketData) {
    log.Printf("Received: %+v", data)
})

ws.SubscribeMarketData([]string{"AAPL", "GOOGL"})
ws.Connect()

Error Handling

import (
    "errors"
    "log"
    aries "github.com/aries-exchange/go-sdk"
)

client := aries.NewClient(
    aries.WithClientID("..."),
    aries.WithClientSecret("..."),
)

order, err := client.Orders.PlaceOrder(&aries.OrderRequest{...})
if err != nil {
    var apiErr *aries.APIError
    if errors.As(err, &apiErr) {
        log.Printf("API Error: %s", apiErr.Message)
        log.Printf("Status Code: %d", apiErr.StatusCode)
    } else {
        log.Fatal(err)
    }
}

Context Support

The SDK supports Go’s context for cancellation and timeouts:
import (
    "context"
    "time"
)

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

accounts, err := client.Accounts.GetUserAccountsWithContext(ctx)
if err != nil {
    log.Fatal(err)
}

Requirements

  • Go 1.18 or higher

Additional Resources