> ## 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.

# Trade API

> نقطة نهاية المعاملات المدمجة من خادم Raydium: الاقتباس والبناء والتوقيع والإرسال. نمط التكامل للتطبيقات التي تريد توجيه Raydium بدون تحميل SDK — ما يعيده، وكيف يختلف عن SDK، وكيف يستهلكه المجمّعون.

<Info>
  **هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.**

  [عرض النسخة الإنجليزية →](/sdk-api/trade-api)
</Info>

<Info>
  **Trade API** هي مجموعة بسيطة من نقاط النهاية على `transaction-v1.raydium.io` (وبعض المسارات المعكوسة على `api-v3.raydium.io`) تقتبس مبادلة وتبني معاملة Solana موقّعة وجاهزة وترجعها في رحلة واحدة. إنها نفس الواجهة التي تستخدمها واجهة Raydium. استخدمها عندما تريد توجيه Raydium بدون تجميع TS SDK — الأنظمة الخلفية، معالجات Blinks، بوتات Telegram، تطبيقات الجهات الخارجية.
</Info>

## متى تستخدم Trade API مقابل SDK

| تريد أن...                                                                                 | استخدم                                                     |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------- |
| دمج المبادلات في نظام خلفي لا يمكنه تجميع حزم npm (مثل بوت Python أو خدمة Go أو خدمة Rust) | **Trade API**                                              |
| عرض Blink مبادلة في منشور وسائط اجتماعية                                                   | **Trade API**                                              |
| بناء تطبيق متصفح حيث يهم توفير الكيلوبايتات                                                | **Trade API**                                              |
| دمج منطق التوجيه داخل برنامج Solana آخر (CPI)                                              | لا شيء — استخدم [`sdk-api/rust-cpi`](/ar/sdk-api/rust-cpi) |
| بناء عميل DEX كامل مع معاينة مسار مخصصة وتراكبات الرسوم البيانية وهيورستيك رسوم الأولوية   | **TS SDK**                                                 |
| تحتاج إلى اقتباس غير متصل حتمي بدون رحلة شبكة                                              | **TS SDK** (مع حالة المجمع المحلي)                         |

SDK أكثر ثراءً؛ Trade API أبسط. كلاهما يلف برامج CPMM/CLMM/AMM v4 الأساسية نفسها، لذا فإن المبادلة على السلسلة الناتجة متطابقة.

## نقاط النهاية الثلاث

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

بناءً على مبلغ الإدخال، اختر مسارًا وأرجع اقتباسًا.

```
GET https://transaction-v1.raydium.io/compute/swap-base-in
  ?inputMint=So11111111111111111111111111111111111111112
  &outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  &amount=1000000000
  &slippageBps=50
  &txVersion=V0
```

الاستجابة:

```json theme={null}
{
  "id": "b2e4...",
  "success": true,
  "version": "V1",
  "data": {
    "swapType": "BaseIn",
    "inputMint":  "So11111111111111111111111111111111111111112",
    "inputAmount":  "1000000000",
    "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "outputAmount": "165234567",
    "otherAmountThreshold": "164408394",
    "slippageBps": 50,
    "priceImpactPct": 0.0012,
    "referrerAmount": "0",
    "routePlan": [
      { "poolId": "58oQ...", "inputMint": "So11...", "outputMint": "USDC...", "feeAmount": "2500000", "feeMint": "So11..." }
    ]
  }
}
```

حقل `id` هو معالج اقتباس معتم يتم تمريره إلى نقطة النهاية التالية. الاقتباس مستقر لمدة \~30 ثانية؛ بعد ذلك، أعد الاقتباس.

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

شكل معكوس: "أريد استقبال بالضبط N من الإخراج؛ اقتبس لي الإدخال المطلوب."

```
GET /compute/swap-base-out
  ?inputMint=<MINT_IN>
  &outputMint=<MINT_OUT>
  &amount=<DESIRED_OUTPUT_AMOUNT>
  &slippageBps=50
  &txVersion=V0
```

شكل الاستجابة متماثل لـ `swap-base-in`؛ يتم قلب دلالات حقل `amount`.

### 3. `POST /transaction/swap-base-in` و `/transaction/swap-base-out`

يأخذ الاقتباس من الخطوة 1 ويرجع معاملة موقّعة وجاهزة:

```
POST https://transaction-v1.raydium.io/transaction/swap-base-in
Content-Type: application/json

{
  "computeUnitPriceMicroLamports": "50000",
  "swapResponse": { ... paste the data object from swap-base-in ... },
  "txVersion": "V0",
  "wallet": "<user_pubkey>",
  "wrapSol": true,
  "unwrapSol": false,
  "inputAccount": "<optional_token_account>",
  "outputAccount": "<optional_token_account>"
}
```

الاستجابة:

```json theme={null}
{
  "id": "9f1c...",
  "success": true,
  "version": "V1",
  "data": [
    { "transaction": "<base64-encoded-versioned-transaction>" }
  ]
}
```

قد يتم إرجاع معاملات متعددة إذا كانت المبادلة تتطلب إعدادًا (مثل إنشاء ATAs، التفاف SOL). وقّع وأرسل بالترتيب.

## مثال من البداية إلى النهاية الأدنى (Python)

```python theme={null}
import base64, requests
from solders.transaction import VersionedTransaction
from solders.keypair import Keypair
from solana.rpc.api import Client

rpc = Client("https://api.mainnet-beta.solana.com")
kp = Keypair.from_bytes(bytes([...]))    # your signer

SOL  = "So11111111111111111111111111111111111111112"
USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

quote = requests.get(
    "https://transaction-v1.raydium.io/compute/swap-base-in",
    params={
        "inputMint": SOL, "outputMint": USDC,
        "amount": 1_000_000_000, "slippageBps": 50, "txVersion": "V0",
    },
).json()

built = requests.post(
    "https://transaction-v1.raydium.io/transaction/swap-base-in",
    json={
        "computeUnitPriceMicroLamports": "50000",
        "swapResponse": quote,
        "txVersion": "V0",
        "wallet": str(kp.pubkey()),
        "wrapSol": True,
        "unwrapSol": False,
    },
).json()

for entry in built["data"]:
    raw = base64.b64decode(entry["transaction"])
    tx = VersionedTransaction.from_bytes(raw)
    tx.sign([kp])
    sig = rpc.send_raw_transaction(bytes(tx)).value
    print(f"Sent: {sig}")
```

هذا حوالي 20 سطرًا. ما يعادله مع TS SDK هو حوالي 30 لكنه يعطيك تحكمًا أغنى (معاينة المسار المخصص، ميزانية وحدة الحساب لكل مجمع، بيانات وصفية الخطأ التفصيلية).

## التوجيه واختيار المجمع

يوجه Trade API عبر **جميع** برامج Raydium (CPMM، CLMM، AMM v4) ويختار أفضل تنفيذ للحجم المقتبس. الخصائص:

* **دعم القفز المتعدد.** يمكن لمبادلة SOL→USDC أن توجه عبر wSOL→JUP→USDC إذا كان أرخص.
* **تقسيم المجمع متعدد البرامج في نفس البرنامج غير مدعوم.** يمر الاقتباس الواحد بمسار واحد بالضبط؛ إذا كنت تريد تقسيم الحجم عبر المجمعات، افعله من جانب العميل (اقتباسان، معاملتان).
* **مستقر مقابل مركز.** يفضل الموجه استخدام CLMM عندما تكون السيولة في النطاق كافية، والعودة إلى CPMM للأزواج ذات الذيل الطويل.
* **إدراج AMM v4.** يتم تضمين مجمعات AMM v4 في التوجيه لكنها تختار فقط عندما توفر تسعيرًا أفضل من بدائل CPMM/CLMM.

لفرض التوجيه عبر مجمع معين، استخدم SDK بدلاً من ذلك — Trade API لا يكشف معامل تثبيت المجمع.

## معامل الراجع

أضف `&referrer=<wallet_pubkey>` إلى نقطة نهاية الحساب لأخذ حد قطع إحالة 1% على المبادلة. انظر [`user-flows/referrals-and-blinks`](/ar/user-flows/referrals-and-blinks) للدلالات. عند الحضور:

* `referrerAmount` في استجابة الاقتباس هو المبلغ المطلق (في نقابة الإدخال) الذي سيتم توجيهه إلى الراجع.
* تحتوي المعاملة النهائية على تحويل رمز SPL إضافي إلى ATA الراجع.

## رسوم الأولوية

`computeUnitPriceMicroLamports` في طلب البناء يعيّن رسم الأولوية للمعاملة المعادة. قاعدة الإبهام:

* `50_000` (0.00005 lamports/CU × 200k CU ≈ 0.00001 SOL): بحد أدنى، جيد للحظات غير المزدحمة.
* `200_000`: احتقان معتدل.
* `1_000_000`: احتقان ثقيل.

للضبط التكيفي، اتصل أولاً بـ `getRecentPrioritizationFees` على RPC الخاص بك وأرسل الوسيط. انظر [`integration-guides/priority-fee-tuning`](/ar/integration-guides/priority-fee-tuning).

## إصدارات المعاملة

* `"V0"` يرجع معاملة مصدرة (`MessageV0`) مع جدول بحث للحسابات الشائعة. أصغر، أسرع. **موصى به.**
* `"LEGACY"` يرجع معاملة وراثية. أكبر؛ استخدمه فقط إذا كانت محفظتك/البنية الأساسية لا تتعامل مع V0.

## أشكال الأخطاء

تعيد API HTTP 200 مع `success: false` للأخطاء المنطقية، HTTP 4xx/5xx لأخطاء النقل/البنية الأساسية.

الأخطاء المنطقية الشائعة:

* `"No route found"` — لا مسار بين النقابتين بهذا الحجم. قلل `amount` أو أعد التفكير في الزوج.
* `"Insufficient liquidity"` — يوجد مسار لكنه سينفجر بـ `slippageBps`. وسّع الانزلاق.
* `"Quote expired"` — `swapResponse` أقدم من 30 ثانية. أعد الاقتباس.
* `"Unsupported mint"` — النقابة ليست في عالم Raydium (غير مدرجة، أو في برنامج مستقدم).

## حدود المعدل

* **نقاط نهاية الاقتباس:** 120 طلب/دقيقة لكل IP.
* **نقاط نهاية البناء:** 60 طلب/دقيقة لكل IP (تكلفة أعلى على الخادم).
* تجاوز الحدود يعيد HTTP 429 مع رأس `Retry-After`.

للحصول على إنتاجية أعلى، اتصل بعلاقات مطوري Raydium؛ مفاتيح طبقة المجمّع متاحة.

## النمط المعماري لمدمجي التكامل

```
┌─────────────┐   quote   ┌───────────────┐   build   ┌───────────────┐   sign/send   ┌──────────┐
│ Your front  │──────────►│ Trade API     │──────────►│ Trade API     │──────────────►│ Solana   │
│   end       │◄──────────│ /compute/...  │◄──────────│ /transaction/ │               │   RPC    │
└─────────────┘           └───────────────┘           └───────────────┘               └──────────┘
                              (stateless)                 (stateless)
```

كل شيء بدون حالة — الشيء الوحيد الذي تحتاج إلى تمريره بين استدعاء الاقتباس واستدعاء البناء هو جسم استجابة الاقتباس نفسه.

## أين تذهب بعد ذلك

* [`sdk-api/typescript-sdk`](/ar/sdk-api/typescript-sdk) — واجهة برمجية أكثر ثراءً مع نفس البرامج الأساسية.
* [`sdk-api/rest-api`](/ar/sdk-api/rest-api) — نقاط نهاية الجانب القراءة (معلومات المجمع، معلومات النقابة) لتتمم جانب الكتابة في Trade API.
* [`user-flows/swap`](/ar/user-flows/swap) — تدفق مبادلة واجهة المستخدم من البداية إلى النهاية.
* [`integration-guides/aggregator`](/ar/integration-guides/aggregator) — نمط للمجمّعات التي توجه عبر العديد من DEXes.

المصادر:

* نقاط نهاية transaction-v1.raydium.io المباشرة.
* فحص علامة التبويب الشبكة في واجهة Raydium (نفس السطح المستهلك).
