Gotrade Indonesia Trading API
Trading saham AS secara programatik lewat antarmuka REST sederhana. Kirim order, pantau posisi, dan cek daya beli untuk akun Gotrade Indonesia mana pun.
Ringkasan
Gotrade Trading API memungkinkan kamu mengirim dan mengelola order saham AS serta membaca data portofolio secara langsung, tanpa membuka aplikasi. Setiap request diautentikasi dengan bearer token yang terikat pada satu akun.
BASE URL
https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1Trading programatik
Kirim order beli dan jual saham AS lewat REST. Mendukung tipe order market, limit, stop, stop limit, dan trailing stop, termasuk extended hours dan overnight trading.
Pemantauan portofolio
Ambil posisi terbuka real-time lengkap dengan unrealized P&L, cost basis, dan performa intraday. Cek saldo kas akun dan daya beli yang tersedia.
Kemampuan
Empat grup endpoint mencakup siklus order, pembacaan portofolio, harga, dan data pasar.
| Kategori | Endpoint | Method |
|---|---|---|
| Order saham | 3 endpoint | POST, GET, DELETE |
| Portofolio | 2 endpoint | GET |
| Harga saham | 1 endpoint | GET |
| Data pasar | 3 endpoint | GET |
Mulai cepat
Enam langkah dari akun baru sampai order programatik pertamamu.
- 1
Buka akun Gotrade
Unduh aplikasi Gotrade lalu daftar.
- 2
Selesaikan verifikasi KYC
Kirim dokumen identitas untuk kepatuhan regulasi.
- 3
Isi saldo akunmu
Setor dana lewat transfer bank atau metode pembayaran yang didukung.
- 4
Ajukan akses trading API
Hubungi perwakilan akun Gotrade kamu untuk mengaktifkan API.
- 5
Buat token API kamu
Masuk ke Profil > API Key di aplikasi.
- 6
Mulai trading
Integrasikan endpoint API dan kirim order pertamamu.
Membuat token
Token API dibuat dari dalam aplikasi Gotrade Indonesia. Setiap akun hanya bisa punya satu token aktif dalam satu waktu. Token berlaku 1 tahun dan bisa dicabut kapan saja.
- 1
Buka aplikasi Gotrade Indonesia
Masuk dengan kredensial akun Gotrade yang terdaftar.
- 2
Masuk ke Profil > API Key
Di pengaturan profil, buka bagian pengelolaan API Key.
- 3
Ketuk Generate Key
Token JWT baru dibuat. Token lama yang masih aktif langsung dicabut, jadi apa pun yang masih memakainya akan berhenti berfungsi.
- 4
Simpan token dengan aman
Simpan sebagai environment variable di sisi server atau di secrets manager. Pembuatan token dibatasi 5 request per menit; masa berlaku token 1 tahun.
Pengingat keamanan
Token kamu memberi akses trading penuh ke akunmu. Jangan pernah membagikannya ke publik, meng-commit-nya ke source control, atau menaruhnya di kode sisi klien. Simpan sebagai environment variable di sisi server atau di secrets manager khusus.
Autentikasi
Sertakan token sebagai bearer token di header Authorization pada setiap request ke endpoint trading, portofolio, dan pasar.
Format header request
Authorization: Bearer <your_b2c_token>Request terautentikasi
Authorization: Bearer <your_b2c_token>curl -X GET "https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1/portfolio/account-balance" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Accept: application/json"
Response berhasil
200 OK{
"data": {
"cash_balance": "10000.00",
"cash_available_for_trade": "8500.00",
"currency": "USD"
},
"status": "success",
"message": "Account balance retrieved successfully"
}
Semua request wajib memakai HTTPS
Request HTTP akan ditolak. Pastikan klienmu memvalidasi sertifikat TLS.
Membuat order
Kirim order saham baru. Mendukung tipe market, limit, stop, stop limit, dan trailing stop. Mengembalikan status order seketika.
POST /api/b2c/v1/stock-orders/create
Parameter request
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| ticker | string | Yes | Kode saham, misalnya AAPL. |
| side | string | Yes | BUY, SELL, buy, atau sell. |
| order_type | string | Yes | market, limit, stop, stop_limit, atau trailing_stop. |
| quantity | number | Cond. | Jumlah lembar. Wajib kecuali amount_cash diisi. |
| amount_cash | number | No | Nominal dolar untuk order notional atau fraksional. |
| limit_price | number | Cond. | Wajib untuk limit dan stop_limit. Minimum 1. |
| stop_price | number | Cond. | Wajib untuk stop, stop_limit, dan trailing_stop. Minimum 1. |
| is_gtc | boolean | No | Good til cancelled. Default-nya order harian. |
| is_extended_hours | boolean | No | Izinkan eksekusi pada extended hours. |
| take_profit | number | No | Harga take profit, opsional. |
| stop_loss | number | No | Harga stop loss, opsional. |
| trail_price | number | No | Selisih trail dalam dolar untuk order trailing_stop. |
| trail_percent | number | No | Persentase trail untuk order trailing_stop. |
Contoh: order beli market
cURLcurl -X POST "https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1/stock-orders/create" \
-H "Authorization: Bearer <your_b2c_token>" \
-H "Content-Type: application/json" \
-d '{
"ticker": "AAPL",
"side": "BUY",
"order_type": "market",
"quantity": 1
}'
Response pembuatan order
201 Created{
"data": {
"stock": {
"ticker": "AAPL",
"name": "Apple",
"full_name": "Apple Inc",
"exchange": "NASDAQ",
"currency": "USD",
"fractionable": true,
"shortable": false
},
"order": {
"order_id": "61e69015-8549-4baf-b96e-00c55b5a28c6",
"side": "BUY",
"type": "MARKET",
"status": "NEW",
"quantity": "1.5",
"cumulative_quantity": "0",
"limit_price": 0,
"time_in_force": "day",
"extended_hours": false,
"average_fill_price": "0",
"fees": { "currency": "USD", "value": 0 },
"created_at": "2026-02-27T06:00:00Z",
"updated_at": "2026-02-27T06:00:00Z",
"total_order_amount": null,
"amount_cash": 0,
"order_expires": "2026-02-28T06:00:00.000Z",
"last_executed": null
}
},
"status": "success",
"message": "Order submitted successfully"
}
Tipe order dan response
Lima tipe order, masing-masing dengan field wajibnya sendiri.
Order market
Dieksekusi seketika pada harga terbaik yang tersedia. Mendukung saham fraksional dan order nominal dolar.
ticker, side, quantity or amount_cash
Order limit
Dieksekusi pada harga limit kamu atau lebih baik. Wajib untuk sesi extended hours dan overnight.
limit_price
Order stop
Menjadi order market begitu harga menyentuh stop_price. Hanya lembar utuh.
stop_price
Order stop limit
Menjadi order limit begitu harga menyentuh stop_price. Butuh kedua harga.
stop_price, limit_price
Order trailing stop
Stop yang mengikuti harga saham. Isi trail_price untuk selisih dolar atau trail_percent untuk persentase. Hanya lembar utuh.
stop_price, trail_price or trail_percent
Status dan pembatalan
Ambil status terkini dari order yang sudah dikirim. orderId adalah UUID yang dikembalikan endpoint create.
GET /api/b2c/v1/stock-orders/{orderId}
cURLcurl -X GET "https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1/stock-orders/61e69015-8549-4baf-b96e-00c55b5a28c6" \
-H "Authorization: Bearer <your_b2c_token>"
200 OK{
"data": {
"stock": {
"ticker": "AAPL",
"name": "Apple",
"full_name": "Apple Inc",
"exchange": "NASDAQ",
"currency": "USD",
"fractionable": true,
"shortable": false
},
"order": {
"order_id": "61e69015-8549-4baf-b96e-00c55b5a28c6",
"side": "BUY",
"type": "MARKET",
"status": "FILLED",
"quantity": "1.5",
"cumulative_quantity": "1.5",
"limit_price": 0,
"time_in_force": "day",
"extended_hours": false,
"average_fill_price": "178.50",
"fees": { "currency": "USD", "value": 0 },
"created_at": "2026-02-27T06:00:00Z",
"updated_at": "2026-02-27T06:00:00Z",
"total_order_amount": 267.75,
"amount_cash": 0,
"order_expires": "2026-02-28T06:00:00.000Z",
"last_executed": "2026-02-27T06:00:30Z"
}
},
"status": "success",
"message": "Order details successfully retrieved"
}
Nilai status order
| Status | Deskripsi |
|---|---|
| NEW | Order diterima dan sedang berjalan. Mencakup juga accepted dan pending_new. |
| FILLED | Order tereksekusi penuh. |
| PARTIAL_FILL | Order tereksekusi sebagian. |
| REJECTED | Order ditolak broker. |
| CANCELED | Order dibatalkan atau kedaluwarsa. |
Batalkan order yang masih pending. Hanya order yang belum terisi penuh yang bisa dibatalkan.
DELETE /api/b2c/v1/stock-orders/{orderId}
cURLcurl -X DELETE "https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1/stock-orders/61e69015-8549-4baf-b96e-00c55b5a28c6" \
-H "Authorization: Bearer <your_b2c_token>"
200 OK{
"data": { "order_id": "61e69015-8549-4baf-b96e-00c55b5a28c6" },
"status": "success",
"message": "Order has been cancelled successfully"
}
Posisi
Mengembalikan seluruh posisi saham yang sedang dipegang, lengkap dengan nilai pasar real time dan unrealized P&L. Isi is_extended_hours=true untuk menyertakan data harga extended hours.
GET /api/b2c/v1/portfolio/open-positions
cURLcurl -X GET "https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1/portfolio/open-positions?is_extended_hours=false" \
-H "Authorization: Bearer <your_b2c_token>"
200 OK{
"data": [
{
"ticker": "AAPL",
"exchange": "NASDAQ",
"currency": "USD",
"quantity": "10.5",
"avg_entry_price": "175.20",
"market_value": "1873.50",
"cost_basis": "1839.60",
"unrealized_pl": "33.90",
"unrealized_plpc": "0.0184",
"unrealized_intraday_pl": "12.50",
"unrealized_intraday_plpc": "0.0067"
}
],
"status": "success",
"message": "Open positions retrieved successfully"
}
Field posisi
| Field | Deskripsi |
|---|---|
| ticker | Kode saham. |
| exchange | Bursa pencatatan, misalnya NASDAQ atau NYSE. |
| currency | Mata uang posisi (USD). |
| quantity | Jumlah lembar yang dipegang. |
| avg_entry_price | Rata-rata tertimbang harga beli per lembar. |
| market_value | Nilai pasar total saat ini (jumlah lembar x harga sekarang). |
| cost_basis | Total biaya perolehan posisi. |
| unrealized_pl | Untung atau rugi belum terealisasi (market_value dikurangi cost_basis). |
| unrealized_plpc | Unrealized P&L dalam persentase desimal. |
| unrealized_intraday_pl | Unrealized P&L hari ini. |
| unrealized_intraday_plpc | Unrealized P&L hari ini dalam persentase desimal. |
Saldo akun
Mengembalikan saldo kas akun dan daya beli yang tersedia dalam USD.
GET /api/b2c/v1/portfolio/account-balance
cURLcurl -X GET "https://api.indo.gotrade.prod-indo.tr8.tech/api/b2c/v1/portfolio/account-balance" \
-H "Authorization: Bearer <your_b2c_token>"
200 OK{
"data": {
"cash_balance": "10000.00",
"cash_available_for_trade": "8500.00",
"currency": "USD"
},
"status": "success",
"message": "Account balance retrieved successfully"
}
Error dan keamanan
Semua response error mengikuti struktur JSON yang konsisten.
{
"status": "error",
"message": "Description of what went wrong"
}
Kode status HTTP
| Kode | Arti | Kapan terjadi |
|---|---|---|
| 200 | OK | Request GET dan DELETE berhasil. |
| 201 | Created | Order berhasil dibuat. |
| 400 | Bad Request | Parameter tidak valid atau melanggar aturan bisnis, misalnya trading dibatasi, take profit atau stop loss pada extended hours, atau daya beli tidak cukup. |
| 401 | Unauthorized | Bearer token tidak ada, kedaluwarsa, atau tidak valid, atau akun belum diaktifkan untuk akses API. |
| 403 | Forbidden | Pembelian saham sedang tidak tersedia. |
| 404 | Not Found | Order, saham, atau ticker tidak ditemukan. |
| 500 | Server Error | Error internal atau kegagalan pengiriman order yang tidak tertangani. |
| 502 | Bad Gateway | Request ke broker gagal saat pembatalan atau pengambilan status. |
Praktik keamanan terbaik
Lakukan
- Gunakan HTTPS untuk semua request
- Simpan token di environment variable
- Gunakan secrets manager di produksi
- Rotasi token secara berkala
- Pantau penggunaan API untuk anomali
Jangan
- Menaruh token di kode sisi klien
- Meng-commit token ke source control
- Membagikan token lewat kanal tanpa enkripsi
- Mencatat nilai token dalam teks polos
- Memakai koneksi HTTP (tanpa TLS)
Changelog
Dokumen ini dikelola Gotrade dan diperbarui seiring hadirnya fitur API baru. Untuk versi terkini, hubungi perwakilan akun kamu.
| Versi | Tanggal | Perubahan |
|---|---|---|
| 1.0 | Maret 2026 | Rilis awal dengan dokumentasi B2C Trading API. |
Total hadiah
lebih dari $4000
termasuk langganan
TradingView untuk
semua pemenang
*Syarat dan ketentuan berlaku