API Documentation
Complete reference for the GeneSYS Wallet API. Use these endpoints to manage wallets, send transactions, process payments, and configure forwarding rules programmatically.
Overview
The GeneSYS API is a RESTful JSON API. All requests and responses use application/json content type. The base URL for all endpoints is:
All timestamps are returned in ISO 8601 format (UTC). Amounts are returned as strings to preserve decimal precision.
Rate Limiting
API requests are rate-limited per API key. The default limit is 60 requests per minute. Rate limit headers are included in every response:
Authentication
The API supports two authentication methods. Choose the appropriate method based on your use case.
JWT Token (Session-based)
Used by the admin dashboard. Obtain a token by logging in through POST /api/auth/login. Include the token in the Authorization header.
JWT tokens expire after 15 minutes. Use the refresh token endpoint to obtain a new access token.
API Key
Used for programmatic access. Create API keys from the dashboard or via the API. Include the key in the X-API-Key header.
API keys can be scoped with specific permissions: read, write, payments, and admin.
Error Handling
The API uses standard HTTP status codes. Errors return a JSON body with an error field.
Common Status Codes
| Code | Meaning |
|---|---|
200 | Success |
201 | Created successfully |
400 | Bad request / validation error |
401 | Unauthorized (invalid or missing credentials) |
403 | Forbidden (insufficient permissions) |
404 | Resource not found |
429 | Rate limit exceeded |
500 | Internal server error |
Wallets
Creates a new HD master wallet. The wallet generates a mnemonic seed phrase that can be used to derive sub-wallets for both Ethereum and Tron networks.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
label | string | Yes | Human-readable name for the wallet |
network | string | Yes | ethereum or tron |
Request Example
Response Example
cURL
Returns a paginated list of all master wallets.
Query Parameters
| Field | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
limit | integer | 20 | Items per page (max 100) |
network | string | -- | Filter by network |
Response Example
cURL
Returns detailed information about a specific master wallet, including balance information.
Path Parameters
| Field | Type | Description |
|---|---|---|
id | string | Master wallet ID |
Response Example
cURL
Derives a new sub-wallet from the specified master wallet. Sub-wallets are deterministically generated using the HD wallet derivation path.
Path Parameters
| Field | Type | Description |
|---|---|---|
id | string | Master wallet ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
label | string | No | Optional label for the sub-wallet |
metadata | object | No | Custom metadata to attach |
Response Example
cURL
Returns a paginated list of sub-wallets for a given master wallet.
Path Parameters
| Field | Type | Description |
|---|---|---|
id | string | Master wallet ID |
Query Parameters
| Field | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
limit | integer | 20 | Items per page (max 100) |
Response Example
cURL
Returns the current balance of a specific sub-wallet, including native token and USDT balances.
Path Parameters
| Field | Type | Description |
|---|---|---|
id | string | Sub-wallet ID |
Response Example
cURL
Transactions
Returns a paginated, filterable list of all transactions across wallets.
Query Parameters
| Field | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
limit | integer | 20 | Items per page |
network | string | -- | Filter by network (ethereum, tron) |
status | string | -- | Filter by status (pending, confirmed, failed) |
tx_type | string | -- | Filter by type (deposit, withdrawal, forward, sweep) |
walletId | string | -- | Filter by wallet ID |
Response Example
cURL
Initiates an outgoing transaction from a specified wallet. The transaction is signed server-side and broadcast to the blockchain network.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
fromWalletId | string | Yes | Source wallet ID (master or sub) |
to | string | Yes | Destination address |
amount | string | Yes | Amount to send |
token | string | No | Token symbol (default: native token). Use USDT for stablecoin transfers. |
network | string | Yes | ethereum or tron |
Request Example
Response Example
cURL
Payments
Creates a new payment request. This generates a unique deposit address where the payer should send funds. The system monitors the address and triggers webhook notifications on status changes.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
network | string | Yes | ethereum or tron |
token | string | Yes | ETH, TRX, or USDT |
amount | number | Yes | Expected payment amount |
callbackUrl | string | No | Webhook URL for status notifications |
metadata | object | No | Custom metadata (e.g., order ID) |
Request Example
Response Example
cURL
Returns complete details for a specific payment, including the current status, received amount, and associated transactions.
Path Parameters
| Field | Type | Description |
|---|---|---|
paymentId | string | Payment ID returned from creation |
Response Example
cURL
Triggers an immediate check of the payment's deposit address for incoming transactions. Useful for forcing a status update without waiting for the automatic polling interval.
Path Parameters
| Field | Type | Description |
|---|---|---|
paymentId | string | Payment ID to check |
Response Example
cURL
Try It
Test API endpoints directly from your terminal. Replace YOUR_API_KEY with your actual key.
Quick Start
1. Create an API key from the API Keys page.
2. Copy one of the cURL examples above.
3. Replace YOUR_API_KEY with your key.
4. Run the command in your terminal.