English πΊπΈ | FranΓ§ais π«π· | EspaΓ±ol πͺπΈ
StellarKit API is a developer utility service that exposes the Stellar Horizon blockchain through a simple REST interface. It is designed for application developers who need fast, typed access to account details, fee estimates, transaction history, network health, and asset metadata.
StellarKit API is a wrapper around the Stellar Horizon API, built with Express.js and the official @stellar/stellar-sdk library. It normalizes Horizon responses, provides a clean REST structure, and adds convenience endpoints for the most common Stellar developer workflows.
This project is ideal for:
- Web and mobile developers building on Stellar
- Server-side services consuming Stellar account and transaction data
- Wallet providers that need reliable fee estimation and account summaries
- Applications requiring typed API responses via bundled TypeScript definitions
- π Network status and ledger health
- π° Dynamic fee estimation for optimal transaction pricing
- π₯ Account detail aggregation including balances, signers, and thresholds
- π Paginated transaction history and operation history per account
- πͺ Asset metadata search and issuer lookup
- π« Built-in security middleware with rate limiting, helmet headers, CORS, and HPP
- π§ͺ Test coverage using Jest and Supertest
- π¦ Bundled TypeScript types for safe integration in TypeScript projects
src/index.jsβ application entry pointsrc/websocket.jsβ WebSocket helper for Stellar streaming datasrc/config/stellar.jsβ Stellar network configurationsrc/routes/β Express route handlers for API endpointssrc/utils/β shared helpers for formatting, validation, caching, response shapingsrc/middleware/β validation, error handling, rate limitingtests/β API and integration teststypes/index.d.tsβ exported TypeScript type definitions
- Node.js >= 18
- npm >= 9
git clone https://github.com/stellarkit-lab-devtools/stellarkit-api.git
cd stellarkit-api
npm install
copy .env.example .envOpen .env and configure your environment variables:
STELLAR_NETWORK=testnet
PORT=3000Supported values for STELLAR_NETWORK are testnet and mainnet.
# Development with auto-reload
npm run dev
# Production
npm startVisit http://localhost:3000 after startup.
Returns a list of available API endpoints and a brief description.
Returns basic service health status.
Returns current Stellar network information, latest ledger data, fee settings, and protocol version.
Calculates a fee estimate for a transaction using the current network base fee and requested operation count.
Fetches account details, balances, signers, thresholds, flags, and spendable balance for the given Stellar public key.
Returns account balance details for XLM and all non-native assets.
Returns a compact account summary suitable for dashboards and quick views.
Lists payments and asset transfers for the account.
Retrieves transaction history for an account, with pagination.
Retrieves operation history for an account, with pagination.
Returns metadata and statistics for a specific Stellar asset.
Searches for assets by code and returns matching results, including issuer details.
{
"success": true,
"data": {
"status": "ok",
"service": "StellarKit API",
"version": "1.0.0",
"network": "testnet"
}
}{
"success": true,
"data": {
"network": "testnet",
"latestLedger": {
"sequence": 123456,
"closedAt": "2024-07-01T12:00:00Z",
"transactionCount": 42,
"operationCount": 89
},
"fees": {
"baseFeeInStroops": 100,
"baseFeeInXLM": "0.0000100"
},
"protocol": {
"version": 21
}
}
}{
"success": true,
"data": {
"operationCount": 3,
"perOperation": {
"economy": { "stroops": 100, "xlm": "0.0000100" },
"standard": { "stroops": 200, "xlm": "0.0000200" },
"priority": { "stroops": 500, "xlm": "0.0000500" }
},
"totalFee": {
"economy": { "stroops": 300, "xlm": "0.0000300" },
"standard": { "stroops": 600, "xlm": "0.0000600" },
"priority": { "stroops": 1500, "xlm": "0.0001500" }
}
}
}This repository publishes type declarations in types/index.d.ts. Use these types to make your client integration type-safe.
import type { AccountResponse, ApiError } from 'stellarkit-api'
async function loadAccount(accountId: string) {
const response = await fetch(`http://localhost:3000/account/${accountId}`)
const payload = await response.json()
if (!response.ok) {
const error = payload as ApiError
throw new Error(error.error.message)
}
return payload as AccountResponse
}npm testnpm run lint
npm run lint:fixnpm run seedContributions are welcome! See CONTRIBUTING.md for guidelines on pull requests, issue reporting, and code style.
This project is licensed under the MIT License.
Returns full account details for a Stellar public key.
Example:
GET /account/GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN
Response:
{
"success": true,
"data": {
"accountId": "GAAZI4...",
"sequence": "12345678",
"xlm": {
"balance": "100.0000000",
"minimumBalance": "1.0000000",
"spendableBalance": "99.0000000"
},
"assets": [...],
"signers": [...],
"flags": {...}
}
}Returns paginated transaction history for an account.
Query params:
| Param | Type | Default | Description |
|---|---|---|---|
limit |
number | 10 |
Number of results (max 200) |
order |
string | desc |
asc or desc |
cursor |
string | β | Pagination cursor from previous response |
Returns paginated operation history for an account. Same query params as above.
Returns metadata and statistics for a specific Stellar asset.
Example:
GET /asset/USDC/GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
Returns paginated accounts holding a trustline for a specific Stellar asset.
Query params:
| Param | Type | Default | Description |
|---|---|---|---|
limit |
number | 10 |
Number of holders (max 200) |
order |
string | desc |
asc or desc |
cursor |
string | β | Pagination cursor from previous response |
Example:
GET /asset/USDC/GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN/holders
Searches for all assets with a given code across all issuers.
Example:
GET /asset/search?code=USDC
Establishes a live, real-time WebSocket connection to stream Stellar ledger updates. As new ledgers are closed on the Stellar blockchain, the API receives them via the Stellar Horizon SDK subscription, parses them, and immediately broadcasts them to connected WebSocket clients.
const ws = new WebSocket('ws://localhost:3000/stream/ledgers');
ws.onopen = () => {
console.log('Connected to StellarKit ledger stream!');
};
ws.onmessage = (event) => {
const ledger = JSON.parse(event.data);
console.log('New ledger closed:', ledger);
// Example output:
// {
// "sequence": 51234567,
// "closedAt": "2026-05-26T20:15:00Z",
// "baseFee": 100,
// "transactionCount": 54
// }
};
ws.onerror = (error) => {
console.error('WebSocket error:', error);
};
ws.onclose = () => {
console.log('WebSocket connection closed.');
};To create a funded Stellar testnet account for local development/testing, run:
npm run seedThis script:
- generates a new keypair
- funds the public key on Stellar testnet using Friendbot
- prints the public/private keys to the console
Note: keep the printed private key secret.
npm testTests use Jest + Supertest. Coverage report is generated at coverage/.
Contributions are very welcome! This project participates in the Stellar Wave Program on Drips β you can earn rewards for solving open issues.
To contribute:
- Fork the repository
- Create a feature branch:
git checkout -b feat/your-feature - Commit your changes:
git commit -m "feat: add your feature" - Push and open a Pull Request
Please read CONTRIBUTING.md before submitting.
stellarkit-api/
βββ scripts/
β βββ ws-client-demo.js # Runnable CLI demo for real-time ledger stream
βββ src/
β βββ config/
β β βββ stellar.js # Stellar SDK + Horizon setup
β βββ middleware/
β β βββ errorHandler.js # Centralised error formatting
β β βββ rateLimiter.js # Rate limiting
β βββ routes/
β β βββ account.js # /account endpoints
β β βββ asset.js # /asset endpoints
β β βββ feeEstimate.js # /fee-estimate endpoint
β β βββ networkStatus.js # /network-status endpoint
β β βββ transactions.js # /transactions endpoints
β βββ utils/
β β βββ response.js # Response helpers
β β βββ validators.js # Input validation helpers
β βββ index.js # App entry point
β βββ websocket.js # WebSocket stream handler
βββ tests/
β βββ api.test.js
β βββ websocket.test.js # WebSocket stream integration tests
βββ .env.example
βββ package.json
βββ README.md
- Stellar Developers Portal
- Stellar JavaScript SDK
- Horizon API Reference
- Stellar Discord
- Stellar Wave Program