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

# Apex Kimlik Doğrulama

> OrbitFlare Apex'te kimliğinizi HTTP üzerinde x-api-key başlığı veya api-key sorgu parametresiyle, QUIC üzerinde ise anahtarınızdan türetilen bir istemci sertifikasıyla doğrulayın.

## API Anahtarı Alın

Apex beta aşamasındadır ve yalnızca davetle kullanılabilir. Hesabınız etkinleştirildikten sonra [OrbitFlare gösterge panelini](https://orbitflare.com/dashboard) açın ve bir anahtar oluşturmak için **Dashboard > Apex** bölümüne gidin. Her anahtar bir katmana aittir ve katman, bahşiş tabanınızı ve hız sınırınızı belirler.

<Warning>
  Anahtara bir parola gibi davranın. Onu elinde tutan herkes hız sınırınızı kullanarak işlem gönderebilir. Anahtar fonlarınızı harcayamaz: işlemler yine kendi anahtar çiftinizle imzalanır.
</Warning>

## HTTP: başlık veya sorgu parametresi

HTTP üzerinde anahtar her istekle birlikte iletilir. Anahtarı iletmenin iki yolu vardır:

| Yöntem                             | Örnek                                                 | Notlar                                                               |
| ---------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------- |
| **`x-api-key` başlığı** (önerilen) | `x-api-key: YOUR_API_KEY`                             | Anahtarı URL'lerin, günlüklerin ve tarayıcı geçmişinin dışında tutar |
| **`api-key` sorgu parametresi**    | `http://fra.apex.orbitflare.com?api-key=YOUR_API_KEY` | RPC URL alanı gibi yalnızca URL kabul eden araçlar için              |

<CodeGroup>
  ```bash Header theme={null}
  curl -s http://fra.apex.orbitflare.com \
    -H "Content-Type: application/json" \
    -H "x-api-key: $APEX_API_KEY" \
    -d '{"jsonrpc":"2.0","id":1,"method":"getTipAccounts","params":[]}'
  ```

  ```bash Query parameter theme={null}
  curl -s "http://fra.apex.orbitflare.com?api-key=$APEX_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","id":1,"method":"getTipAccounts","params":[]}'
  ```
</CodeGroup>

Aynı iki seçenek düz HTTP rotalarında da (`/send`, `/send-bin`, `/send-batch`, `/send-bundle`) çalışır.

<Warning>
  HTTP rotaları, diğer Solana gönderim servislerinde olduğu gibi şifrelenmez: API anahtarınız ve işlemleriniz ağ yolundaki herkes tarafından okunabilir. Anahtarın makinenizden hiç çıkmadığı QUIC'i tercih edin veya HTTP'yi yalnızca güvendiğiniz bir ağdan kullanın. Anahtarın açığa çıktığını düşünüyorsanız panelden yenileyin.
</Warning>

`getTipAccounts`, `getVersion`, `health` ve `GET /ping` anahtar gerektirmez. İşlem gönderen her şey gerektirir.

Eksik veya geçersiz bir anahtar JSON-RPC hatası `-32001` döndürür, düz rotalarda ise HTTP `401` döndürür. [Hatalar ve hız sınırları](/tr/apex/errors-and-rate-limits) sayfasına bakın.

## QUIC: istemci sertifikası

QUIC üzerinde hiçbir şey istek başına doğrulanmaz ve **API anahtarınız asla ağ üzerinden geçmez**. Bunun yerine:

1. İstemciniz API anahtarından bir ed25519 anahtar çifti türetir.
2. QUIC el sıkışması sırasında bu açık anahtarı TLS istemci sertifikasında sunar.
3. Apex uç noktası açık anahtarı hesabınızla eşleştirir. O andan itibaren bu bağlantıdaki her akış size aittir.

Rust crate'i [`apex-sender-client`](/tr/apex/rust-client) bunların hepsini sizin yerinize yapar. Diğer diller için türetme şöyledir:

```text theme={null}
seed    = HKDF-SHA256(ikm = api_key bytes, salt = "apex-sender", info = "apex-sender-client-cert", L = 32)
keypair = ed25519 keypair from seed
```

Açık anahtarı Solana'nın sahte X.509 sertifikasına sarın. Bu, doğrulayıcıların TPU QUIC için kullandığı biçimle aynıdır (`solana-tls-utils` crate'indeki `new_dummy_x509_certificate`). Uç nokta yalnızca sertifikanın içindeki anahtarı kontrol eder. Diğer sertifika alanları yok sayılır.

**Test vektörü:** `test-api-key` API anahtarı `ANPhYB8kmb2puLauuJKSX5orMk3rVT87gBWWy94F68hU` açık anahtarını türetir.

El sıkışma başarısız olursa uç nokta bağlantıyı bir uygulama hata koduyla kapatır:

| Kapatma kodu | Anlamı                                                                                                  |
| ------------ | ------------------------------------------------------------------------------------------------------- |
| `1`          | İstemci sertifikası sunulmadı                                                                           |
| `2`          | Sertifikanın anahtarı hiçbir API anahtarıyla eşleşmiyor                                                 |
| `3`          | Çok fazla bağlantı: API anahtarı başına en fazla 128, adres başına en fazla 64. Bir bağlantı yeterlidir |

### Türetilen Anahtarınızı Kontrol Edin

Gösterge paneli, her API anahtarının yanında istemci açık anahtarını gösterir. QUIC bağlantınız reddedilirse ikisini karşılaştırın. Rust crate'i ile:

```rust theme={null}
use apex_sender_client::client_pubkey;

fn main() {
    let api_key = std::env::var("APEX_API_KEY").expect("APEX_API_KEY is required");
    // Prints the certificate key only, never the API key itself.
    println!("{}", client_pubkey(&api_key));
}
```

Uyuşmazlık, anahtarın yanlış kopyalandığı anlamına gelir.

## Tarayıcılar

Her HTTP yanıtı `Access-Control-Allow-Origin: *` taşır ve `OPTIONS` ön kontrol istekleri yanıtlanır, dolayısıyla bir Apex uç noktasını tarayıcı kodundan çağırabilirsiniz.

<Warning>
  Herkese açık bir web sayfasına gömülü API anahtarı her ziyaretçi tarafından görülebilir. Herkese açık ön yüzlerde gönderimi kendi arka ucunuz üzerinden yapın veya döndürmeye hazır olduğunuz bir anahtar kullanın.
</Warning>

Apex uç noktaları 80 numaralı portta düz HTTP üzerinden sunulur. Kendisi HTTPS üzerinden yüklenen bir sayfa, tarayıcının karışık içerik kurallarına tabidir, bu nedenle yayınlamayı planladığınız ortamdan test edin.
