Symbols
Auto supports a broad symbol universe for tracking (conditions, alerts, webhooks, Telegram, LLM steps), while execution is narrower and tied to tradable perp markets.
Tracking vs execution
- Tracking: DEX/on-chain (effectively unbounded — long-tail tokens, pre-CEX-listing assets, niche memes), crypto majors across CEXes and perp venues, plus HIP-3 markets on Hyperliquid for tokenised equities, commodities, FX, and indices; assume the majority of commonly requested symbols are already available.
- Execution (
market_order,limit_order, orllmcallbacks that place trades): only symbols tradable as perps on the target venue are executable. Tradability is per-venue — a symbol may be tradable onhyperliquid,gmx, both, or neither. The action'sexchangeparam selects the venue.
If you are building a monitoring-only query, you usually do not need a pre-check. If you are placing trades, you can optionally pre-check tradability before submitting order actions.
Symbol formats
Crypto symbols
Use plain uppercase ticker symbols:
BTCETHSOLHYPE
HIP-3 symbols
HIP-3 markets can come from multiple providers (for example xyz, flx, vntl, and others).
In Auto query symbol fields, use the provider-prefixed canonical symbol form:
xyz:WTIOILxyz:TSLAxyz:NVDAflx:OILflx:GOLDvntl:OPENAIvntl:MAG7
General pattern:
<provider>:<base_symbol>for provider-scoped HIP-3 symbols<ticker>for standard crypto symbols
Asset classes (examples)
| Class | Examples | Notes |
|---|---|---|
| Onchain | RAVE, TAO, long-tail tokens | Broad tracking coverage. |
| Crypto majors | BTC, ETH, SOL, HYPE | Use plain ticker format. |
| Tokenised equities (HIP-3) | xyz:TSLA, xyz:NVDA, flx:CRCL, vntl:SPACEX | Use provider prefix form: <provider>:<base_symbol>. |
| Commodities (HIP-3) | xyz:WTIOIL, flx:OIL, flx:GOLD, xyz:SILVER | Provider prefix depends on listing venue. |
| FX / indices (HIP-3) | xyz:EURUSD, xyz:USDJPY, xyz:XYZ100, flx:USA500 | Same prefix rule as other HIP-3 symbols. |
These are examples, not an exhaustive list.
Symbol translation cheat sheet
Use this when you see pair-style market names and need the Auto query symbol value:
| Seen in market listings | Use in Auto query symbol |
|---|---|
TSLA-USDC on provider xyz | xyz:TSLA |
WTIOIL-USDC on provider xyz | xyz:WTIOIL |
EURUSD-USDC on provider xyz | xyz:EURUSD |
OIL-USDH on provider flx | flx:OIL |
OPENAI-USDH on provider vntl | vntl:OPENAI |
BTC (standard crypto ticker) | BTC |
Fast path to first trade
- Pick the canonical query symbol (
BTCfor majors, or<provider>:<base_symbol>for HIP-3). - Optionally pre-check the symbol with
GET /v2/auto/validate-symbol/{exchange}/{symbol}(exchange=hyperliquidorgmx). - Submit a query with
market_orderorlimit_orderaction in API key mode, with an active exchange connection (see Trading Execution).
Validate symbols
If you want a pre-flight check before submitting a query, use GET /v2/auto/validate-symbol/{exchange}/{symbol} to verify a symbol is supported on a given venue (exchange = hyperliquid or gmx). This applies to both trade execution (market_order / limit_order) and price / ta data sources.
curl https://api.elfa.ai/v2/auto/validate-symbol/hyperliquid/xyz:TSLA \
-H "x-elfa-api-key: $ELFA_API_KEY"
{ "supported": "true" }
Reference: Validate Symbol.
If a trade symbol is not tradable
- Order actions (
market_order,limit_order, orllmcallbacks to those) are rejected by trade-symbol validation for non-tradable symbols. - The same symbol can still be useful for tracking conditions and non-trade actions.
- Typical fallback: keep the condition symbol, switch action to
notify/webhook/telegram_bot, and route execution externally if needed.
Templates
Tracking-only starter (alert/webhook path):
{
"title": "TSLA breakout tracker",
"description": "Track TSLA breakout and notify my runner.",
"query": {
"conditions": {
"AND": [
{
"source": "price",
"method": "current",
"args": { "symbol": "xyz:TSLA" },
"operator": ">",
"value": 300
}
]
},
"actions": [
{
"stepId": "step_1",
"type": "telegram_bot",
"params": { "botToken": "<TELEGRAM_BOT_TOKEN>", "chatId": "<TELEGRAM_CHAT_ID>" }
}
],
"expiresIn": "24h"
}
}
Trade-executing starter (direct execution path):
{
"title": "BTC > 80k market buy",
"description": "Buy 10 USDC notional of BTC once BTC trades above 80k.",
"query": {
"conditions": {
"AND": [
{
"source": "price",
"method": "current",
"args": { "symbol": "BTC" },
"operator": ">",
"value": 80000
}
]
},
"actions": [
{
"stepId": "step_1",
"type": "market_order",
"params": {
"exchange": "hyperliquid",
"symbol": "BTC",
"side": "buy",
"amount": "10"
}
}
],
"expiresIn": "24h"
}
}
Agent rule of thumb
- For tracking-only workflows: proceed directly with the symbol you want.
- For trade-executing workflows: submit create/convert directly when you already know the symbol is tradable; use
validate-symbolwhen you want pre-flight certainty.