Clients & SDKs
Talk to the Manza API from the terminal, a script, or your app. Every endpoint in these docs shows a request in all ten clients below — this page is how you install and authenticate each one.
The official clients#
Manza ships nine maintained clients plus plain curl. They all read the same MANZA_API_KEY / MANZA_BASE_URL environment variables and target the same REST API, so pick whichever fits your stack. Each is open source on GitHub:
- CLI — getmanza/cli
- JavaScript / TypeScript — getmanza/manza-ts
- Ruby — getmanza/manza-ruby
- Python — getmanza/manza-python
- Go — getmanza/manza-go
- Rust — getmanza/manza-rust
- Elixir — getmanza/manza-elixir
- Crystal — getmanza/manza-crystal
- PHP — getmanza/manza-php
Authentication#
Every client authenticates with an API key you generate from Settings → Developer → API Keys. Keep it in the MANZA_API_KEY environment variable rather than hardcoding it — all eight SDKs read it automatically:
export MANZA_API_KEY="sk_live_..."MANZA_BASE_URL when you go live. See the Sandbox & test cards guide.curl#
No install — every request is a signed HTTP call. Pass your key as a Bearer token:
curl "https://ma.manza.dev/api/entity" \
-H "Authorization: Bearer $MANZA_API_KEY"CLI#
A single self-contained binary (the Bun runtime is bundled — no Node, Bun, or Ruby needed). Install via Homebrew or npm:
# Homebrew (macOS / Linux)
brew install getmanza/tap/manza
# or npm (thin shim that fetches the platform binary)
npm install -g @getmanza/cliAuthenticate once, then call any endpoint:
# interactive login, or pipe a key in for CI:
printf '%s\n' "$MANZA_API_KEY" | manza login --api-key-stdin
manza accounts listThe login is stored in ~/.config/manza/config.json. The CLI also reads MANZA_API_KEY, MANZA_BASE_URL, MANZA_API_VERSION (the Manza-Version header) and MANZA_TIMEOUT_MS (default 30000). Run manza --help or manza <resource> --help for the command list, or manza request <method> <path> to call any endpoint directly.
JavaScript / TypeScript#
Runtime-agnostic (Node 20+, Bun, Deno, browsers, Workers). Install @getmanza/sdk with your package manager:
bun add @getmanza/sdk # or npm / pnpm / yarnimport { Manza } from "@getmanza/sdk";
// Node/Bun: process.env is available. Browsers and Workers have no
// process.env, so pass apiKey explicitly there.
const manza = new Manza({ apiKey: process.env.MANZA_API_KEY });
const accounts = await manza.accounts.list();Ruby#
Published as manza on RubyGems. Add it to your Gemfile:
gem "manza"require "manza"
manza = Manza.new(api_key: ENV["MANZA_API_KEY"])
accounts = manza.accounts.listPython#
Requires Python 3.11+. Install manza from PyPI:
pip install manzafrom manza import Manza
# Picks up MANZA_API_KEY from the environment by default.
client = Manza()
accounts = client.accounts.list()Go#
Requires Go 1.24+; no runtime dependencies outside the standard library. Install with go get:
go get github.com/getmanza/manza-goimport manza "github.com/getmanza/manza-go"
// Reads MANZA_API_KEY from the environment by default.
client, err := manza.New()
accounts, err := client.Accounts.List(ctx, manza.AccountListParams{})Rust#
Add the manza crate from crates.io:
cargo add manza// Falls back to the MANZA_API_KEY env var when api_key isn't set.
let client = manza::Client::builder()
.api_key(std::env::var("MANZA_API_KEY")?)
.build()?;
let accounts = client.accounts().list(Default::default())?;Elixir#
Add :manza from Hex to the deps in your mix.exs:
{:manza, "~> 1.0"}# :api_key defaults to the MANZA_API_KEY env var.
{:ok, client} = Manza.new(api_key: System.fetch_env!("MANZA_API_KEY"))
{:ok, accounts} = Manza.Accounts.list(client)Crystal#
Install manza as a GitHub dependency in your shard.yml:
dependencies:
manza:
github: getmanza/manza-crystalrequire "manza"
client = Manza::Client.new # reads MANZA_API_KEY
accounts = client.accounts.listPHP#
Requires PHP 8.2+. Install manza/manza-php with Composer:
composer require manza/manza-phpuse Manza\Client;
// apiKey defaults to the MANZA_API_KEY env var.
$client = new Client(apiKey: getenv('MANZA_API_KEY'));
$accounts = $client->accounts->list();