> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Ikhtisar API Transaksi

> Pembangun transaksi swap Solana sisi server.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/api-reference/route-api-v2/overview)
</Info>

## Apa itu Transaction API?

Transaction API Raydium (Route V2) adalah layanan sisi server yang membangun transaksi swap Solana yang terserialisasi tanpa memerlukan klien untuk mempertahankan koneksi RPC atau menggabungkan seluruh SDK Raydium. Ini sangat menyederhanakan integrasi untuk:

* Frontend web yang tidak dapat menjalankan klien RPC lokal
* Aplikasi mobile dengan sumber daya terbatas
* Bot trading tanpa antarmuka
* Agregator dan penyedia dompet

Alih-alih melakukan perutean pool kompleks dan konstruksi transaksi di klien, Anda meminta kutipan swap dan pembuatan transaksi dari API kami, kemudian menandatangani dan menyiarkan hasilnya menggunakan RPC Solana apa pun.

## Ikhtisar Alur Kerja

Transaction API memisahkan perhatian menjadi dua fase:

### 1. Fase Komputasi: Dapatkan Kutipan

Panggil `/compute/swap-base-in` atau `/compute/swap-base-out` untuk menerima output swap yang diharapkan (atau input yang diperlukan) berdasarkan status pool saat ini. Endpoint ini **read-only** dan tidak memerlukan penandatanganan apa pun:

```bash theme={null}
GET /compute/swap-base-in?inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0
```

Respons mencakup:

* Jumlah output yang diharapkan
* Perincian rute (pool dan sumber likuiditas mana yang digunakan)
* Dampak harga

### 2. Fase Transaksi: Bangun dan Tandatangani

Setelah Anda memiliki respons komputasi, teruskan ke `/transaction/swap-base-in` atau `/transaction/swap-base-out` (bersama dengan dompet dan konfigurasi):

```bash theme={null}
POST /transaction/swap-base-in
Content-Type: application/json

{
  "wallet": "YourWalletAddress",
  "swapResponse": { ...response from /compute/swap-base-in },
  "txVersion": "V0",
  "computeUnitPriceMicroLamports": "1000",
  "wrapSol": false,
  "unwrapSol": false,
  "inputAccount": "TokenAccount1...",
  "outputAccount": "TokenAccount2..."
}
```

Respons berisi:

* Transaksi versioned yang dikodekan base64 siap untuk ditandatangani
* Alamat tabel pencarian alamat (jika txVersion=V0)

Klien Anda kemudian:

1. Mendekode transaksi
2. Menandatanganinya dengan keypair pengguna
3. Menyiarkannya melalui RPC Solana apa pun
4. Menunggu konfirmasi

## Endpoint Komputasi

### `GET /compute/swap-base-in`

**Kasus penggunaan**: Pengguna menentukan jumlah input, kami menghitung output.

**Parameter query yang diperlukan**:

* `inputMint` – Alamat mint token yang Anda kirim
* `outputMint` – Alamat mint token yang Anda inginkan
* `amount` – Jumlah input dalam lamport (unit terkecil)
* `slippageBps` – Slippage maksimal yang dapat diterima dalam basis poin (0–10000)
* `txVersion` – `V0` atau `LEGACY`

**Opsional**:

* `referrerBps` – Jika Anda memiliki otoritas referrer, basis poin output untuk dikumpulkan sebagai biaya referrer

### `GET /compute/swap-base-out`

**Kasus penggunaan**: Pengguna menentukan output yang diinginkan, kami menghitung input yang diperlukan.

**Parameter query yang diperlukan**:

* `inputMint`, `outputMint`, `amount` (output yang diinginkan), `slippageBps`, `txVersion`

**Catatan**: Tidak ada basis poin referrer untuk base-out (belum diimplementasikan).

## Endpoint Transaksi

### `POST /transaction/swap-base-in`

Membangun transaksi untuk jumlah input tetap.

**Isi yang diperlukan**:

* `wallet` – Alamat dompet penandatangan Anda
* `swapResponse` – Seluruh objek respons komputasi
* `txVersion` – Versi transaksi
* `computeUnitPriceMicroLamports` – Biaya prioritas dalam mikro-lamport

**Opsional**:

* `wrapSol` – Jika true, bungkus SOL native untuk input
* `unwrapSol` – Jika true, buka bungkus WSOL menjadi SOL di output
* `inputAccount` – Akun token untuk input (diperlukan jika tidak membungkus SOL)
* `outputAccount` – Akun token untuk output
* `nonceInfo` – Nonce tahan lama untuk penandatanganan offline
* `jitoInfo` – Parameter paket perlindungan MEV Jito
* `referrerWallet` – Dompet referrer untuk pengumpulan biaya

### `POST /transaction/swap-base-out`

Membangun transaksi untuk jumlah output tetap.

**Parameter yang sama dengan base-in**, kecuali:

* Bidang `referrerInfo` saat ini dikomentari (belum diimplementasikan)

## Amplop Respons

Semua endpoint mengembalikan amplop standar:

```json theme={null}
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "success": true,
  "version": "V1",
  "data": { ... }
}
```

Saat error, `success` adalah `false` dan `msg` berisi kode error (misalnya, `REQ_WALLET_ERROR`, `REQ_SLIPPAGE_BPS_ERROR`).

## Bentuk Respons Transaksi

Respons transaksi yang berhasil terlihat seperti:

```json theme={null}
{
  "id": "...",
  "success": true,
  "version": "V1",
  "data": {
    "transaction": "AgABB...",  // Base64-encoded transaction
    "addressLookupTableAddresses": ["Address1...", "Address2..."]  // For V0 only
  }
}
```

## Contoh Integrasi

Berikut adalah alur khas dalam pseudocode:

```typescript theme={null}
// 1. Get quote
const quote = await fetch(
  'https://transaction-v1.raydium.io/compute/swap-base-in?' +
  'inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0'
).then(r => r.json());

// 2. Validate quote
if (!quote.success) {
  throw new Error(quote.msg);
}

// 3. Build transaction
const tx = await fetch(
  'https://transaction-v1.raydium.io/transaction/swap-base-in',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      wallet: userWalletAddress,
      swapResponse: quote,
      txVersion: 'V0',
      computeUnitPriceMicroLamports: '1000',
      inputAccount: userInputTokenAccount,
      outputAccount: userOutputTokenAccount,
    }),
  }
).then(r => r.json());

// 4. Decode and sign
const transaction = VersionedTransaction.deserialize(
  Buffer.from(tx.data.transaction, 'base64')
);
transaction.sign([userKeypair]);

// 5. Send via RPC
const rpc = new Connection('https://api.mainnet-beta.solana.com');
const sig = await rpc.sendTransaction(transaction);
await rpc.confirmTransaction(sig);
```

## Parameter Utama Dijelaskan

### `txVersion`

* **V0**: Transaksi Solana modern dengan Address Lookup Tables (ALTs). Ukuran serialisasi lebih kecil, biaya lebih rendah.
* **LEGACY**: Format transaksi pre-ALT. Lebih besar, tetapi berfungsi dengan semua endpoint RPC.

Pilih **V0** jika memungkinkan; jatuh kembali ke **LEGACY** jika RPC atau dompet Anda tidak mendukung ALTs.

### `computeUnitPriceMicroLamports`

Biaya prioritas untuk penyertaan blok yang lebih cepat. Atur ke `0` untuk tidak ada biaya prioritas, atau nilai yang lebih tinggi (misalnya, `1000`) untuk bersaing di jaringan yang ramai. Unit adalah mikro-lamport per unit komputasi.

### `slippageBps`

Toleransi slippage maksimal dalam basis poin. `100` = 1%, `50` = 0,5%.

* Gunakan nilai yang lebih rendah (misalnya, 25–50 bps) untuk swap yang paling stabil
* Tingkatkan untuk pasangan volatile atau likuiditas rendah

### `wrapSol` dan `unwrapSol`

* **wrapSol**: Jika `true`, API membungkus SOL native Anda menjadi WSOL. Tidak perlu `inputAccount`.
* **unwrapSol**: Jika `true`, API membuka bungkus WSOL output kembali ke SOL native. Tidak perlu `outputAccount`.

Jika keduanya `false`, Anda harus menyediakan akun token eksplisit.

## Endpoint Jaringan

| Jaringan | Mainnet                     | Devnet                             |
| -------- | --------------------------- | ---------------------------------- |
| Host     | `transaction-v1.raydium.io` | `transaction-v1-devnet.raydium.io` |
| Protocol | HTTPS                       | HTTPS                              |

## Kode Error

Pesan error umum:

| Kode                      | Arti                                                 |
| ------------------------- | ---------------------------------------------------- |
| `REQ_SLIPPAGE_BPS_ERROR`  | Slippage tidak valid atau di luar jangkauan          |
| `REQ_INPUT_MINT_ERROR`    | Alamat mint input tidak valid                        |
| `REQ_OUTPUT_MINT_ERROR`   | Alamat mint output tidak valid                       |
| `REQ_AMOUNT_ERROR`        | Jumlah bukan angka yang valid                        |
| `REQ_TX_VERSION_ERROR`    | txVersion harus V0 atau LEGACY                       |
| `REQ_WALLET_ERROR`        | Alamat dompet tidak valid                            |
| `REQ_INPUT_ACCOUT_ERROR`  | Akun token input hilang atau tidak valid             |
| `REQ_OUTPUT_ACCOUT_ERROR` | Akun token output hilang atau tidak valid            |
| `UNKNOWN_ERROR`           | Error sisi server; periksa parameter permintaan Anda |

## Lihat Juga

* [Spesifikasi OpenAPI](/id/api-reference/openapi/route-api-v2.yaml)
* [Panduan Integrasi Agregator](/id/integration-guides/aggregator)
