The Aster API is a Binance-style futures API (/fapi/v3/... paths on fapi.asterdex.com, symbol@stream WebSocket names) with Web3 authentication: in V3 an agent key you authorise from your wallet signs each request as EIP-712 data, where V1 used an HMAC secret. The rest of this guide is the detail: endpoints, signing, a Python order example, streams, limits, errors and a bot blueprint. Choosing the venue first? Read the Aster DEX review.
1. V1 vs V3: which Aster API to use
Aster runs its order book on its own Aster Chain L1. The official docs repository says plainly: use V3 for all new integrations. The business functions (orders, positions, leverage, transfers) are broadly the same in both versions; what changes is authentication and the execution path.
| V1 (legacy) | V3 "Pro API" (recommended) | |
|---|---|---|
| Credential | API key + secret (up to 30 keys per account) | API wallet (agent): an address + private key you authorise from your main wallet |
| Signature | HMAC SHA256 of query string + body; X-MBX-APIKEY header | EIP-712 typed-data signature over the URL-encoded parameters, signed by the agent key |
| Replay protection | timestamp + recvWindow (default 5000 ms) | nonce in microseconds, valid within 60 s of server time; the last 100 nonces per agent are remembered |
| Paths | /fapi/v1/* | /fapi/v3/* |
| Extras | – | Built on Aster L1 for faster taker orders, on-chain trade traceability, Noop to cancel queued transactions, guarded cancels |
| New keys | Not possible since March 25, 2026 (existing keys keep working) | Yes, at asterdex.com/en/api-wallet |
Sources: asterdex/api-docs README (re-read October 19, 2026) and "Aster API V1 vs V3" overview; the API Management page shows the same notice. Some pages on docs.asterdex.com still describe the V1 key-and-secret flow.
2. Endpoints, SDKs and testnet
| What | Mainnet | Testnet |
|---|---|---|
| Futures REST | https://fapi.asterdex.com | https://fapi.asterdex-testnet.com |
| Futures WebSocket | wss://fstream.asterdex.com | wss://fstream.asterdex-testnet.com |
| Spot REST / WebSocket | https://sapi.asterdex.com / wss://sstream.asterdex.com | See the spot testnet doc |
| EIP-712 chain ID for signing | 1666 | 714 (official demo script) |
| Create API wallets | asterdex.com/en/api-wallet | asterdex-testnet.com/en/api-wallet |
SDKs. Aster does not publish a maintained V3 SDK. The docs ship Python examples that use requests and eth-account, a demo/ folder (agent registration, deposits and withdrawals, Solana agents) and a JavaScript consolidation script. The GitHub organisation also has aster-connector-python, a V1 (key and secret) connector last updated in March 2025, plus aster-mcp and aster-skills-hub for AI-agent tooling. In practice you write a small signing module (below) and call the REST endpoints directly.
On October 19, 2026 GET /fapi/v3/exchangeInfo listed 605 perpetual symbols with status TRADING (578 quoted in USDT, 25 in USD1, 2 in U; 584 in September). Always read symbol rules from this endpoint rather than hard-coding them.
3. Creating an API wallet (agent)
In the app
- Fund the account first. Since September 1, 2026, authenticated V3 endpoints only work after the main wallet has completed a deposit (see the Aster deposit guide).
- Go to asterdex.com/en/api-wallet (the Pro API tab in the API menu) and connect your main wallet.
- Use the button to authorise a new API wallet (it appears once your wallet is connected). The page's table lists Account, API Wallet Name, API Wallet Address, Permission and Valid Until for each agent.
- Give the agent a name, choose its permissions, set an expiry, and sign with your main wallet. Store the agent's private key in your bot's secret store.
Via the API
POST /fapi/v3/registerAndApproveAgent (weight 50) registers and approves an agent in one call. Its parameters: user, nonce, agentName, agentAddress, expired (milliseconds), signatureChainId (56 for EVM wallets, 101 for Solana), canSpotTrade, canPerpTrade, canWithdraw, optional ipWhitelist and agentCode, and a signature from the main wallet. The docs describe agentCode as a “referral/invitation code for agent registration”. EVM wallets sign EIP-712 typed data and Solana wallets sign Ed25519; here the main wallet signs with domain chain ID = signatureChainId (56 or 101), not the 1666 used for trading requests. For this call the nonce must be within 10 seconds of server time. If canWithdraw is true, an IP whitelist is mandatory. There are matching endpoints to update, list and delete agents.
4. How V3 signing works
- Collect the business parameters (for an order:
symbol,side,type,quantity,price,timeInForce…). - Add
user(your main wallet address),signer(the API wallet address) andnonce(current time in microseconds). - URL-encode them into one string, for example
symbol=BTCUSDT&side=BUY&...&nonce=.... - Put that string in the
msgfield of an EIP-712 message whose domain is nameAsterSignTransaction, version1, chain ID 1666 and a zero verifying contract. - Sign with the API wallet's private key and send the parameters plus
signatureas a form body (or query string).
The nonce rules matter for bots. A nonce already used is rejected as a duplicate; a nonce more than 60 seconds away from server time is rejected as expired; and each agent address keeps only its 100 most recent nonces, so a nonce older than all of them is also rejected. Nonces are tracked per agent address, so separate bots should use separate agents. The docs list incorrect parameter sorting, mixing milliseconds with microseconds, forgetting user or signer, and assuming V3 is still HMAC as the most common migration mistakes. The safest rule: sign exactly the URL-encoded string you send, in the same order, as the official Python example does.
5. Python example: place and cancel an order
This follows the official V3 example, updated for the current eth-account release (0.14), where encode_structured_data from the docs has been replaced by encode_typed_data. Install with pip install requests eth-account.
import os, time, urllib.parse, requests
from eth_account import Account
from eth_account.messages import encode_typed_data
HOST = "https://fapi.asterdex.com"
USER = os.environ["ASTER_USER"] # main wallet address
SIGNER = os.environ["ASTER_SIGNER"] # API wallet address
KEY = os.environ["ASTER_SIGNER_KEY"] # API wallet private key
def sign(params):
params = dict(params, user=USER, signer=SIGNER,
nonce=str(time.time_ns() // 1000)) # microseconds
msg = urllib.parse.urlencode(params)
typed = {
"types": {
"EIP712Domain": [
{"name": "name", "type": "string"},
{"name": "version", "type": "string"},
{"name": "chainId", "type": "uint256"},
{"name": "verifyingContract", "type": "address"}],
"Message": [{"name": "msg", "type": "string"}]},
"primaryType": "Message",
"domain": {"name": "AsterSignTransaction", "version": "1",
"chainId": 1666,
"verifyingContract": "0x" + "0" * 40},
"message": {"msg": msg}}
sig = Account.sign_message(encode_typed_data(full_message=typed), private_key=KEY)
# eth-account 0.14 returns hex without "0x"; the docs' examples send 0x-prefixed signatures
params["signature"] = sig.signature.to_0x_hex()
return params
order = sign({"symbol": "BTCUSDT", "side": "BUY", "type": "LIMIT",
"timeInForce": "GTX", # post-only
"quantity": "0.001", "price": "80000",
"newClientOrderId": "bot-0001"})
r = requests.post(HOST + "/fapi/v3/order", data=order)
print(r.status_code, r.text)
cancel = sign({"symbol": "BTCUSDT", "origClientOrderId": "bot-0001"})
print(requests.delete(HOST + "/fapi/v3/order", data=cancel).text) Why these numbers: on October 19, 2026 (06:07 UTC) BTCUSDT traded at $82,768.0. Its filters were tick size 0.1, step size 0.001, minimum quantity 0.001 BTC and minimum notional $5, so 0.001 BTC (about $83) is the smallest order. A post-only buy at $80,000 rests below the market. On a 0% maker fee it costs nothing if it fills; the same size as a market order would pay 0.04% taker, about $0.033. Run the script against the testnet host (and chain ID 714, per the official demo script) first. If the signature is rejected, compare your string byte for byte with the demo scripts in the api-docs repo. The docs’ own sample still imports encode_structured_data and points at a fapi3 host; the base endpoint they document for production is fapi.asterdex.com.
Ready to run it on mainnet?
Register with code DTLpLc, deposit, authorise an API wallet with trade-only permission and an expiry, and start with the minimum size.
6. Order types and symbol filters
- Order types: LIMIT, MARKET, STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET, TRAILING_STOP_MARKET (callback rate 0.1–5%).
- Time in force: GTC, IOC, GTX (post-only) and HIDDEN (a HIDDEN order is not visible in the order book). FOK is not offered in V3 (re-checked October 19, 2026; Binance-ported code that sends FOK must change).
- Triggers:
workingTypeMARK_PRICE or CONTRACT_PRICE (the default is CONTRACT_PRICE, the last price), with optionalpriceProtect. - Newer options: BBO pegging (
pegPriceTypeCOUNTERPARTY_1 or QUEUE_1 pluspegOffset), per-order self-trade prevention (stpModeEXPIRE_TAKER, EXPIRE_MAKER or EXPIRE_BOTH), chase orders, strategy orders, batch place, batch modify and batch cancel. - Hedge mode: send
positionSideLONG or SHORT;reduceOnlycannot be used in hedge mode. - Filters (from exchangeInfo): PRICE_FILTER (tick size), LOT_SIZE and MARKET_LOT_SIZE (step and max size), MAX_NUM_ORDERS (200 on BTCUSDT), MAX_NUM_ALGO_ORDERS (10), MIN_NOTIONAL ($5) and PERCENT_PRICE. On BTCUSDT a buy must be at most 1.02× mark price and a sell at least 0.98×.
- Dead man's switch:
POST /fapi/v3/countdownCancelAll(weight 10) cancels all orders on a symbol when a countdown expires. The docs suggest calling it every 30 seconds with 120,000 ms; send 0 to stop the timer.
For the trading side of these orders, see Aster advanced order types, the TP/SL bracket walkthrough and tick size and lot size explained.
7. WebSocket market and user-data streams
Base URL wss://fstream.asterdex.com. Every stream in the V3 docs, with the update speed they state (October 19, 2026):
| Data | Stream name | Update speed |
|---|---|---|
| Aggregate trades | <symbol>@aggTrade | 100 ms |
| Mark price + funding | <symbol>@markPrice, @markPrice@1s, !markPrice@arr | 3 s or 1 s |
| Klines (candles) | <symbol>@kline_<interval> | 250 ms |
| Mini ticker | <symbol>@miniTicker, !miniTicker@arr | 500 ms / 1 s |
| 24 h ticker | <symbol>@ticker, !ticker@arr | 500 ms / 1 s |
| Best bid/ask | <symbol>@bookTicker, !bookTicker | Real time |
| Liquidations | <symbol>@forceOrder, !forceOrder@arr | 1 s |
| Partial depth (5/10/20 levels) | <symbol>@depth<levels>[@500ms|@100ms] | 250, 500 or 100 ms |
| Diff depth (local order book) | <symbol>@depth[@500ms|@100ms] | 250, 500 or 100 ms |
| User data (orders, balances, positions) | /ws/<listenKey> | On event |
Source: “Websocket Market Streams” and “User Data Streams” in aster-finance-futures-api-v3.md. Symbols are lowercase (btcusdt@depth5); !…@arr streams cover every market at once.
- URLs: raw streams at
wss://fstream.asterdex.com/ws/<stream>, combined streams at/stream?streams=a/b/c. Symbols are lowercase. - Live control: send
SUBSCRIBE,UNSUBSCRIBE,LIST_SUBSCRIPTIONS,SET_PROPERTYorGET_PROPERTYmessages with an integerid. - Connection rules: a connection lasts at most 24 hours. The server pings every 5 minutes and drops you if it sees no pong within 15 minutes. Clients may send 10 messages per second, and one connection can carry 200 streams. Repeated disconnections can get an IP banned.
- User data:
POST /fapi/v3/listenKeyreturns a key valid for 60 minutes;PUTextends it andDELETEcloses it. Connect to/ws/<listenKey>for margin calls, balance and position updates, order updates, leverage changes and announcements. Events may arrive out of order under load, so sort by theEevent time.
The docs recommend using the user-data stream, not REST polling, for order status and positions during volatile markets. To keep a local order book, use the standard recipe: open the diff-depth stream, fetch a /fapi/v3/depth snapshot, then apply the buffered updates.
8. Rate limits and bans
| Limiter | Limit | Scope | Where to see usage |
|---|---|---|---|
| REQUEST_WEIGHT | 2,400 per minute | Per IP | X-MBX-USED-WEIGHT-1M header |
| ORDERS | 1,200 per minute | Per account | X-MBX-ORDER-COUNT-1M |
| ORDERS | 300 per 10 seconds | Per account | X-MBX-ORDER-COUNT-10S |
| WebSocket incoming messages | 10 per second | Per connection | Disconnect when exceeded |
| WebSocket streams | 200 | Per connection | – |
Live /fapi/v1/exchangeInfo and /fapi/v3/exchangeInfo rateLimits, October 19, 2026 (identical, unchanged since September). Weights: new order 0, Noop 1, listenKey 1, countdownCancelAll 10, registerAndApproveAgent 50; depth scales with the limit parameter.
A 429 means back off. Continuing after 429s gets the IP auto-banned with HTTP 418, and bans escalate from 2 minutes to 3 days for repeat offenders. Weight limits are per IP, not per key, so several bots on one server share 2,400. A 503 means the request reached the server but no reply came in time: the order status is unknown, so query it before you resend.
Fees for API traders are the same as in the app: 0% maker / 0.04% taker on standard crypto perps, 0.1% taker on Group B pairs and 0.0125% taker on RWA perps. A bot that takes $1,000,000 of notional pays $400 in taker fees; a maker-only strategy pays nothing. Details and VIP tiers: Aster fee structure.
9. Differences from the Binance API
If you have a Binance USDⓈ-M futures bot, much of it carries over: the /fapi path layout, the JSON shapes, enums (order types, GTX, workingType), filters, the X-MBX-* weight headers, the negative error-code format and the symbol@stream WebSocket naming. Here is what does not carry over:
- Authentication: V3 has no API secret and no HMAC. You need
user,signer, a microsecondnonceand an EIP-712 signature. Only the legacy V1 is HMAC, and you can no longer create V1 keys. - Nonce, not timestamp: 60-second window, 100 remembered nonces per agent.
- Deposit gate: authenticated V3 calls return
-5050until the main wallet has deposited. - On-chain extras:
Noopto cancel still-queued transactions, and guarded cancel endpoints for orders placed on-chain. - Hosts: fapi/fstream.asterdex.com, and spot on sapi/sstream.asterdex.com.
- Accounts: there is no exchange login or KYC account behind the API; the account is your main wallet address, and deposits and withdrawals go through Aster Chain's validator-confirmed cross-chain system (see the deposit guide).
For a product comparison rather than an API one, see Aster vs Binance perpetuals.
10. Common errors
| Code | Meaning | Fix |
|---|---|---|
| -1003 | TOO_MANY_REQUESTS | Slow down; move polling to WebSocket. |
| -1022 | INVALID_SIGNATURE | Check the parameter string, chain ID 1666 (714 on testnet) and that you signed with the agent key. For agent registration the domain chain ID must equal signatureChainId (56 or 101), not 1666. |
| -4225 | Nonce Expired (shown in the docs' Noop example) | Use microseconds from a synced clock; do not reuse nonces. |
| -5050 | DEPOSIT_REQUIRED | Make a deposit from the main wallet. |
| -1102 | Mandatory parameter empty or malformed | Check the type's required fields (LIMIT needs timeInForce, quantity and price). |
| -1111 | BAD_PRECISION | Round to tick size and step size. |
| -4164 | MIN_NOTIONAL | Order value below the minimum (for example $5 on BTCUSDT). |
| -2019 | Margin is insufficient | Reduce size or add margin. |
| -2021 | Order would immediately trigger | Stop or trailing price on the wrong side of the market. |
| -2022 | ReduceOnly order rejected | No position to reduce, or wrong side. |
| -4061 | Position side does not match | Hedge vs one-way mode mismatch. |
| -4131 | Market order rejected (PERCENT_PRICE) | The book is too thin; use a limit order. |
11. Security checklist
- Trade-only agents. Leave
canWithdrawoff unless you truly need it, and if you turn it on, the IP whitelist it requires is your second line of defence. - Short expiries. Set
expired/ Valid Until to weeks, not years, and rotate agents. - One agent per bot: nonces are tracked per agent, and a leaked key can be revoked without stopping everything.
- The main wallet key never touches the server; it only signs agent approvals.
- Handle 503 as "unknown" and reconcile with the user-data stream before resending.
- Use countdownCancelAll so a crashed bot does not leave orders behind.
- Migrate old V1 keys to V3 agents; existing V1 keys still work, but V3 is where new features land.
Strategy ideas: automated trading on Aster (next section), multi-DEX arbitrage, and how Aster’s API stacks up against other venues in perp DEX APIs compared. Choosing a venue first? Start with the best DEX guide or what is a DEX.
12. Automated trading on Aster: built-in bots first, then your own
Before you write a bot, check whether Aster already runs the strategy for you. Several automation tools are built into the Pro interface and run on the exchange side, so they keep working when your laptop is closed. We read each of the docs pages below on September 25, 2026.

| Tool | What it automates | Limits and rules (docs) |
|---|---|---|
| Grid Trade (More → Grid Trade) | Buy and sell limit orders at fixed intervals inside a range. Neutral, long or short grids | Optional trigger price and stop range; creation fails if you have open orders or positions on that symbol, are in Hedge Mode, or already have 10 active or pending grids |
| Auto parameters | Suggests the range and grid count | Upper and lower price from Bollinger bands; grid number = range ÷ ATR. Does not work on assets without enough history |
| Grid 2.0 | Runs each grid in a dedicated grid subaccount, apart from your manual positions | Cross: one grid per pair, sharing margin per settlement asset. Isolated: up to 50 grids. Main accounts only; margin must be in the market's settlement asset |
| Grid Marketplace | Copy (or reverse) the parameters of a running grid | A one-time parameter snapshot; your grid does not follow the source afterwards |
| TWAP | Splits a large order over time | 1 minute to 7 days, up to 30 per account; if one slice fails the margin check the whole TWAP stops (reduce-only is exempt) |
| Scaled order | Ladders limit orders across a price range | Up to 110 sub-orders; Equal, Increasing, Decreasing or Random distribution |
| Chase order | Keeps a post-only order at the best bid or ask | Reprices every second; up to 5 per pair; always post-only, so fills pay the 0% maker fee |
| countdownCancelAll (API) | A dead man's switch | Cancels all open orders on a symbol if your bot stops refreshing the countdown |
Grid fills rest on the book, so on standard crypto perps they pay the 0% maker fee; the cost of a grid is the taker fee on any market exit, funding on the inventory it carries, and the risk of the price leaving the range. Every grid order must meet the symbol's minimum notional ($5 on all 605 trading perps in exchangeInfo on October 19, 2026), which is why dense grids need more initial margin. More on these order types in our Aster advanced order types guide.
When to write your own bot
Write code when you need something the built-in tools cannot do: quoting both sides around a fair price you compute yourself, hedging across venues, reacting to funding, or mixing signals. A minimal market-making loop looks like this:
- Stream the book. Subscribe to
<symbol>@depthand keep a local copy (section 7), plus the user-data stream for your fills. - Compute a fair price, for example the mid of the best bid and ask, adjusted for your inventory.
- Quote both sides with post-only (
GTX) limit orders a chosen distance from fair price, rounded to the tick and step fromexchangeInfo(BTCUSDT: $0.10 tick, 0.001 BTC step, $5 minimum). - On each fill, re-quote and check inventory; hedge or flatten with a taker order only when inventory exceeds your limit.
- Refresh
countdownCancelAllevery loop so a crash leaves nothing on the book.
What a bot actually pays on Aster
| Cost | Aster (standard crypto perps) | What it means for a bot |
|---|---|---|
| Maker fee | 0% | Resting quotes are free; cancels and amendments cost no gas |
| Taker fee | 0.04% (VIP 1, General pairs) | $0.40 per $1,000 every time you cross the spread to hedge or exit |
| Funding | BTCUSDT and ETHUSDT every 8 h; of 786 symbols in /fapi/v1/fundingInfo, 363 settle every 4 h, 323 every 8 h, 97 hourly and 3 every 2 h | Read fundingIntervalHours per symbol; do not assume 8 h |
| Rate limits | 2,400 weight/min per IP; 1,200 orders/min and 300 per 10 s per account | Back off on 429; ignoring it leads to 418 bans of 2 minutes to 3 days |
Funding intervals from the live GET /fapi/v1/fundingInfo response on October 19, 2026 (the list includes symbols that are not currently trading). Fees from Aster's fee docs on the same date.
Test before you trust it
- Backtest on real data.
GET /fapi/v3/klinesreturns public candles (we queried BTCUSDT 1h on October 19, 2026). For order-book strategies, record@depthand@aggTradeyourself for a few weeks; a candle backtest cannot tell you whether a passive quote would have filled. - Run it on the testnet. Point the bot at
fapi.asterdex-testnet.com. The faucet gives 1,000 test USDT and 1,000 test ASTER once per day; deposits, withdrawals and internal transfers are disabled there. - Then go live small, with hard limits the bot cannot override: maximum position, maximum order size, a daily loss limit that cancels everything and stops the process, and an alert when the WebSocket drops.
If you run the same strategy on several venues, compare the costs first: on Hyperliquid the base tier pays 0.015% maker and 0.045% taker (Hyperliquid API bot guide), while a Lighter Standard account pays 0% on both sides but with slower order processing than Premium. See the Aster fee structure for VIP tiers.
FAQ
Does Aster DEX have an API?
Yes. Aster has a REST API for perpetuals at https://fapi.asterdex.com (spot at https://sapi.asterdex.com), WebSocket market and user-data streams at wss://fstream.asterdex.com, and a testnet at fapi.asterdex-testnet.com. The official documentation is the asterdex/api-docs repository on GitHub, which recommends the V3 "Pro API" for all new integrations (checked October 19, 2026).
What is the Aster API base URL?
Futures REST: https://fapi.asterdex.com with /fapi/v3/... paths (legacy /fapi/v1/...). Spot REST: https://sapi.asterdex.com. Futures WebSocket: wss://fstream.asterdex.com (raw streams at /ws/<stream>, combined at /stream?streams=a/b). Testnet: https://fapi.asterdex-testnet.com and wss://fstream.asterdex-testnet.com.
Does the Aster API use HMAC or EIP-712 signatures?
Both, depending on the version. The legacy V1 API uses a Binance-style API key and secret with HMAC SHA256 signatures, but new V1 keys cannot be created since March 25, 2026. The current V3 API uses an API wallet (agent): each request carries user, signer and a microsecond nonce, and the parameter string is signed as EIP-712 typed data (domain AsterSignTransaction, chain ID 1666) with the API wallet’s private key.
How do I create an Aster API key in 2026?
Open asterdex.com/en/api-wallet (the "Pro API" tab), connect your wallet and authorise a new API wallet. Each agent has a name, permissions and a validity date, and you sign the approval with your main wallet. Programmatically, POST /fapi/v3/registerAndApproveAgent does the same with canSpotTrade, canPerpTrade and canWithdraw flags; an IP whitelist is mandatory if you allow withdrawals.
What are the Aster API rate limits?
The live exchangeInfo endpoint returned 2,400 request weight per minute per IP, 1,200 orders per minute and 300 orders per 10 seconds per account on October 19, 2026. Breaking them returns HTTP 429; continuing after 429s triggers automatic IP bans (HTTP 418) that grow from 2 minutes to 3 days. WebSocket connections accept 10 incoming messages per second and up to 200 streams.
Does Aster have a WebSocket API?
Yes. Market streams (aggTrade, markPrice, kline, miniTicker, ticker, bookTicker, forceOrder, partial and diff depth) run on wss://fstream.asterdex.com, and the user-data stream (orders, balances, positions, margin calls) on /ws/<listenKey> after POST /fapi/v3/listenKey. A listenKey lasts 60 minutes unless you extend it with PUT, and a connection lasts at most 24 hours.
Is the Aster API compatible with Binance Futures code?
The shapes are Binance-style: /fapi paths, X-MBX-USED-WEIGHT and X-MBX-ORDER-COUNT headers, similar order types, filters and error-code format, and symbol@stream WebSocket names. Legacy V1 is close enough that Binance-style clients mostly need only a new base URL. V3 changes authentication completely, so a Binance library will not sign V3 requests without a custom signer, and V3 has no FOK time-in-force.
Why does my Aster V3 request return -5050?
Since September 1, 2026, authenticated V3 endpoints (account, order, trade) only work after the main wallet linked to the Aster account has made a deposit. Deposit first; agent-wallet management and public market data are not affected.
Does Aster have built-in trading bots?
Yes, for common strategies. The Pro interface has Grid Trade (neutral, long and short grids, with auto parameters from Bollinger bands and ATR, a trigger price and a stop), Grid 2.0 (each grid runs in its own grid subaccount: one cross grid per pair or up to 50 isolated grids), a Grid Marketplace to copy or reverse running grids, and native TWAP, Scaled and Chase orders. Use the API only when you need logic these tools do not offer.
What fees do API traders pay on Aster?
The same as manual traders: 0% maker and 0.04% taker on standard crypto perps, 0.1% taker on Group B pairs and 0.0125% taker on RWA perps. There is no gas per order. Signing up with a referral code that shares rebates (ours returns 5%) lowers the effective rate for a bot too.
Trade Aster from code
Sign up with referral code DTLpLc, deposit, authorise a trade-only API wallet, and let your bot quote at 0% maker fees.
Running a cross-venue bot? Pair Aster with Hyperliquid, the deepest perp DEX order book. Code HOLYGRAIL gives 4% off fees on your first $25M of volume, and the Hyperliquid API and WebSocket guide covers its streaming API. Before you deposit, the Aster review covers safety and custody, and the Aster referral code page shows how the fee rebate is credited. Lighter's API is covered in the Lighter API guide.
Disclosure: DTLpLc is our Aster referral code; we earn a share of referred users’ trading fees. Endpoints, signing, limits and error codes were checked in Aster’s official API docs, docs site, app pages and live API on October 19, 2026. Aster changes its API often; check the CHANGELOG in github.com/asterdex/api-docs before you deploy. Nothing here is financial advice.