---
title: Official Multi-Language SDKs
description: Official SDK client libraries for GAAPx in Node.js/TypeScript, Python, Go, and Ruby.
sidebar_label: Multi-Language SDKs
---

# Official Multi-Language SDKs

GAAPx provides officially maintained, type-safe client SDKs across four major language ecosystems. All SDKs are auto-generated from our [OpenAPI 3.1 Specification](/openapi.json) and include native support for the ASC 606 5-step framework, deterministic revenue waterfalls, and Note 6 disclosure schedules.

---

## SDK Package Registry Overview

| Language / Runtime | Official Package Name | Registry | Installation Command | Project / Documentation Link |
| :--- | :--- | :--- | :--- | :--- |
| **Node.js / TypeScript** | `@gaapx/sdk` | [npm](https://www.npmjs.com/package/@gaapx/sdk) | `npm install @gaapx/sdk` | [npmjs.com/package/@gaapx/sdk](https://www.npmjs.com/package/@gaapx/sdk) |
| **Python** | `gaapx-sdk` | [PyPI](https://pypi.org/project/gaapx-sdk/) | `pip install gaapx-sdk` | [pypi.org/project/gaapx-sdk/](https://pypi.org/project/gaapx-sdk/) |
| **Go** | `github.com/gaapx/gaapx-go` | [pkg.go.dev](https://pkg.go.dev/github.com/gaapx/gaapx-go) | `go get github.com/gaapx/gaapx-go` | [pkg.go.dev/github.com/gaapx/gaapx-go](https://pkg.go.dev/github.com/gaapx/gaapx-go) |
| **Ruby** | `gaapx-ruby` | [RubyGems](https://rubygems.org/gems/gaapx-ruby) | `gem install gaapx-ruby` | [rubygems.org/gems/gaapx-ruby](https://rubygems.org/gems/gaapx-ruby) |

---

## 1. Node.js & TypeScript SDK (`@gaapx/sdk`)

### Installation

```bash
npm install @gaapx/sdk
# or using pnpm
pnpm add @gaapx/sdk
# or using yarn
yarn add @gaapx/sdk
```

### Usage Example

```typescript
import { GAAPxClient } from '@gaapx/sdk';

const gaapx = new GAAPxClient({
  apiKey: process.env.GAAPX_API_KEY || 'test_sk_gaapx_sandbox_free_tier',
  baseUrl: 'https://sandbox.gaapx.ai/v1', // Free instant sandbox
});

async function main() {
  // 1. Ingest Contract
  const contract = await gaapx.contracts.create({
    customer_name: 'Acme Enterprises',
    total_value: 120000,
    start_date: '2026-01-01',
    end_date: '2026-12-31',
  });
  console.log('Contract created:', contract.id);

  // 2. Query Revenue Waterfall
  const waterfall = await gaapx.waterfalls.get({
    contract_id: contract.id,
    start_period: '2026-01',
    end_period: '2026-12',
  });
  console.log('Recognized YTD:', waterfall.total_recognized);
}

main();
```

---

## 2. Python SDK (`gaapx-sdk`)

### Installation

```bash
pip install gaapx-sdk
```

### Usage Example

```python
from gaapx import GAAPxClient

client = GAAPxClient(
    api_key="test_sk_gaapx_sandbox_free_tier",
    base_url="https://sandbox.gaapx.ai/v1"
)

# Ingest and validate contract
contract = client.contracts.create(
    customer_name="Globex Corp",
    total_value=240000,
    start_date="2026-01-01",
    end_date="2026-12-31"
)

# Fetch ASC 606 revenue recognition schedule
waterfall = client.waterfalls.get(contract_id=contract.id)
for period in waterfall.periods:
    print(f"{period.period}: Recognized ${period.recognized_amount:,.2f}")
```

---

## 3. Go SDK (`github.com/gaapx/gaapx-go`)

### Installation

```bash
go get github.com/gaapx/gaapx-go
```

### Usage Example

```go
package main

import (
	"context"
	"fmt"
	"github.com/gaapx/gaapx-go"
)

func main() {
	client := gaapx.NewClient("test_sk_gaapx_sandbox_free_tier",
		gaapx.WithBaseURL("https://sandbox.gaapx.ai/v1"),
	)

	waterfall, err := client.Waterfalls.Get(context.Background(), &gaapx.WaterfallParams{
		ContractID:  "cntr_acme_101",
		StartPeriod: "2026-01",
		EndPeriod:   "2026-12",
	})
	if err != nil {
		panic(err)
	}

	fmt.Printf("Total Deferred Revenue: $%.2f\n", waterfall.TotalDeferred)
}
```

---

## 4. Ruby SDK (`gaapx-ruby`)

### Installation

```bash
gem install gaapx-ruby
```

### Usage Example

```ruby
require 'gaapx'

GAAPx.configure do |config|
  config.api_key = ENV['GAAPX_API_KEY'] || 'test_sk_gaapx_sandbox_free_tier'
  config.base_url = 'https://sandbox.gaapx.ai/v1'
end

client = GAAPx::Client.new
contracts = client.contracts.list(query: 'Acme')
puts "Found #{contracts.total} contracts"
```

---

## Free Sandbox Environment

Every SDK works out-of-the-box with the free instant sandbox token:
- **Sandbox Base URL**: `https://sandbox.gaapx.ai/v1`
- **Instant Token**: `test_sk_gaapx_sandbox_free_tier`
- **No credit card required**.
