Gate CrossEx + TradingView Webhook: Missing Middle
You've probably typed gate crossex api tradingview webhook into Google — autocomplete finishes the sentence for you. But the top eight hits are either Gate's own "What is CrossEx" page or scraped rewrites of older API tutorials. Nobody answers the one thing you actually want to know: how does my TradingView alert become a single webhook that fans out to seven exchanges?
/crossex/orders and Gate forwards to Binance, OKX, Bybit, Kraken, Hyperliquid, Deribit, or Gate itself. But it does not accept a raw TradingView webhook payload — TradingView sends its own JSON, Gate expects its own API shape, and the piece that bridges the two is what nobody warns you about.What CrossEx Actually Is, and Which 7 Venues One Key Reaches
Names first. API — the machine-readable interface an application exposes so your program can call it without clicking a web UI. API key — the credential string your program uses to authenticate. It is password-grade; if it leaks, someone else can place orders as you.
Gate's v4 API docs describe CrossEx as: "CrossEx is a unified multi-venue exchange surface: Binance, OKX, Gate, Bybit, Kraken, Hyperliquid, and Deribit tie into one account shell for transfers, market data subscriptions, fills, positions, and account maintenance."
Break that down and CrossEx does three things: one account shell (positions and fills come out of the same API), one order endpoint (POST /crossex/orders where you name the venue and Gate forwards), and one market data layer (/crossex/market/tickers and /crossex/market/funding_info).
| Venue | exchange_type value | Note |
|---|---|---|
| Binance | BINANCE | Largest global exchange |
| OKX | OKX | Both spot and perp |
| Bybit | BYBIT | Mostly perp |
| Kraken | KRAKEN | US and EU userbase |
| Gate itself | GATE | Native venue in the same account |
| Hyperliquid | HYPERLIQUID | On-chain perp DEX |
| Deribit | DERIBIT | Options-focused |
Source: Gate v4 API docs, CrossEx page, exchange_type field (verified Aug 2026). The notes are my one-line categorisation, not Gate's.
Note the list does not include Bitget or BingX. CrossEx is not "every exchange" — it is the seven Gate has picked. You still need each of their native APIs to reach those two.
Wiring a TradingView Webhook Through — the Piece Nobody Warns You About
Webhook — the mechanism where TradingView fires an HTTP POST at a URL you specify when an alert triggers. The payload is whatever JSON or plain text you wrote into the alert message; there is no standard format.
Gate's CrossEx POST /crossex/orders expects Gate's own shape — symbol (venue, business and pair joined by underscores, e.g. BYBIT_SPOT_BTC_USDT), side (uppercase BUY / SELL), type (uppercase LIMIT / MARKET), qty, price, time_in_force. The two shapes don't match, and that is the piece nobody warns you about.
gate.com/api/v4/crossex/orders?That is why "gate crossex api tradingview webhook" turns up no direct answer on Google: the middle part is something you assemble, and Gate's docs don't do it for you. The companion piece on TradingView webhook end to end covers the webhook side of the wire.
What the Last Three Changelog Entries Added
I pulled everything CrossEx-related from the last month of changelog and dropped pure typo fixes.
| Version | Date | Change |
|---|---|---|
v4.106.115 | 2026-08-03 | Expanded CrossEx order error docs; split state=FAIL (CrossEx validation failure) from state=REJECT (downstream exchange rejection); added the common rejection reasons |
v4.106.110 | 2026-07-28 | Added GET /crossex/market/tickers and GET /crossex/market/funding_info — funding rates that used to need one call per venue can now be pulled in a single shot |
v4.106.109 | 2026-07-22 | Added RPI to the supported time_in_force values on POST /crossex/orders; added spot_rpi_maker_fee and future_rpi_maker_fee to the GET /crossex/fee response |
Source: Gate v4 API changelog (verified 16 Aug 2026). Read the live page at gate.com/docs/developers/apiv4/en — it has had multiple additions inside a week.
Approach One: Write a Thin Relay Yourself
The most direct path is to stand up a Cloudflare Worker or a small FastAPI service that receives the TradingView webhook, translates it into a CrossEx order request, signs it and sends it. The skeleton looks like this:
# Incoming: TradingView alert JSON
{
"secret": "your-webhook-token",
"symbol": "BTC-USDT",
"side": "buy",
"qty": 0.001,
"venue": "BYBIT"
}
# Outgoing: CrossEx order request
POST /api/v4/crossex/orders
{
"symbol": "BYBIT_SPOT_BTC_USDT",
"side": "BUY",
"type": "MARKET",
"qty": "0.001",
"time_in_force": "GTC"
}The upside of your own relay is you own the order path end to end: whether to suppress repeated triggers on the same bar, whether to retry on failure, where the logs land. The downside is you have to run that service — uptime, key rotation, CrossEx error-code handling all fall on you.
Approach Two: A Third-Party Multi-Exchange Router — but Check Whether It Actually Uses CrossEx
Off-the-shelf routers between TradingView and multiple exchanges exist — PineConnector, 3Commas, our own TVSBot all sit in this space. The differences look like this.
| Self-hosted relay via CrossEx | Third-party router (native APIs) | ||
|---|---|---|---|
| Time to first order | A few days to a week | Ready right after sign-up | |
| API keys required | 1 CrossEx key | One per exchange | |
| Exchanges supported | Gate's 7 | Depends on vendor, usually 6-10 | |
| Who owns the routing logic | Your own relay | The vendor | |
| Who fixes bugs | You | The vendor — subject to their SLA |
These two aren't optimising the same thing — it isn't 'which is better', it is 'whose execution do you trust'.
One thing to be straight about: our TVSBot included, none of these third-party routers actually go through Gate's CrossEx endpoint — they place orders through each exchange's native API. So the "one key to seven" ergonomics are only there if you take the CrossEx path yourself; go through a third-party router and you are still holding six keys, you just don't have to run the relay.
The RPI TIF Value: Gate Documents the Acronym, Not the Behaviour
TIF (time in force) — how long an order stays live. The common values are GTC (rests until filled or cancelled), IOC (cancel any unfilled remainder immediately), FOK (fill in full or cancel).
v4.106.109 added RPI to the supported time_in_force values on POST /crossex/orders. Where the field is defined, the docs expand it as "RPI: Retail Price Improvement", listed alongside GTC / IOC / FOK / POC. The acronym is documented, but exactly how the order behaves — and how it differs from a plain limit maker — isn't spelled out anywhere in the docs.
time_in_force to GTC in your relay — that is the value CrossEx has supported all along, with well-defined behaviour. Test RPI on small size before turning it on for real orders: the docs only added their error handling in v4.106.115, which tells you the edges of this path are still being filled in. Any new TIF, any new order type, deserves a dry-run or minimum-notional test before you scale it up.An Edge Case Nobody Warns You About: CrossEx Order State Has Two Kinds of Failure
v4.106.115 split CrossEx failures into two layers.
| state value | Who rejected it | Common cause |
|---|---|---|
FAIL | Gate CrossEx itself | Bad parameters (wrong field name, wrong enum value), signature error, CrossEx-side maintenance |
REJECT | Downstream exchange | The downstream's min order size, price filter, insufficient balance, reduce-only with no position |
Source: Gate v4 API v4.106.115 (2026-08-03) error docs (verified Aug 2026). Both states appear in the state field of the order response.
Why the split matters — the debugging path is different. FAIL means your relay is what to fix; REJECT means your model of that particular exchange is what to fix (go look at its min notional, check its price filter). CrossEx used to give you a single opaque error field, and "order failed" was all you had to work with. Now you can tell them apart, but your relay has to log the two states separately, not just print the error message — otherwise you won't be able to walk it back once size scales up.
The failure taxonomy is close to what shows up in cross-exchange arbitrage, just at a different layer: that piece is about the opportunity disappearing; this one is about the order itself getting turned away.
Honest Admission: I Haven't Tested How CrossEx Access Is Provisioned
Gate's v4 API docs don't spell out whether CrossEx needs to be enabled separately, or whether it is API-only — they just link a CrossEx help-desk address at the bottom of the CrossEx page. I haven't run through the full application flow, and I haven't checked whether a non-API user can manage a CrossEx position from the web UI. Everything above assumes you already hold a key that can hit /crossex/orders. If you are stuck at provisioning, that is outside what this piece covers.
Frequently Asked Questions
Does CrossEx support Bitget or BingX?
exchange_type only lists BINANCE / OKX / GATE / BYBIT / KRAKEN / HYPERLIQUID / DERIBIT — seven venues. Bitget and BingX aren't in it, and you still need their native APIs for those two.Can a TradingView alert place a CrossEx order directly?
Which has lower latency, CrossEx or direct connections to all seven exchanges?
Is cross-venue P&L netting a CrossEx feature?
POST /crossex/transfers) and quote conversion (POST /crossex/convert/quote). If you need netting, ask the CrossEx help desk directly.I'm already on TVSBot or PineConnector — should I switch to CrossEx?
Get started
Route TradingView signals to six exchanges — your own API keys, dry-run first, per-venue native APIs rather than CrossEx. If you want to run CrossEx alongside, the fifth section covers how the two combine.
Start Free- Which crypto exchanges support TradingView webhooks natively (2026 update)
- TradingView webhook end to end: from alert to auto-order
- TradingView webhook not firing? A six-layer debug path
- Alternatives to PineConnector for crypto TradingView webhooks
- Cross-exchange arbitrage basics: mechanics, fees, implementation