İstek Limitleri

Endpoint grupları ve aracı kurumlar için geçerli limitler.

Genel bakış

Limit aşıldığında 429 Too Many Requests döner. Retry-After ve X-RateLimit-* başlıklarını kullanarak bir sonraki isteğin zamanını belirleyin.

Son fiyat — PAY / VİOP

JWT + ürün grubu

1 istek / saniye. Her üründe compact/details ve symbols/all=true ortak sayaç; PAY ile VİOP ayrı sayaç

Uygulandığı endpointler

GET /api/v1/market-data/last-price GET /api/v1/market-data/last-price/details GET /api/v1/market-data/viop/last-price GET /api/v1/market-data/viop/last-price/details
Yanıt başlıkları
Retry-After, X-RateLimit-Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining

Günlük OHLC

JWT + endpoint grubu

1 istek / 5 saniye; live-bar ve diğer gruplardan ayrı sayaç

Uygulandığı endpointler

GET /api/v1/market-data/daily-ohlc
Yanıt başlıkları
Retry-After, X-RateLimit-Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining

Açık mum

JWT + endpoint grubu

1 istek / 5 saniye; daily-ohlc ve diğer gruplardan ayrı sayaç

Uygulandığı endpointler

GET /api/v1/market-data/live-bar
Yanıt başlıkları
Retry-After, X-RateLimit-Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining

Son tick’ler

JWT + endpoint grubu

1 istek / 3 saniye

Uygulandığı endpointler

GET /api/v1/market-data/recent-ticks
Yanıt başlıkları
Retry-After, X-RateLimit-Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining

Kapanmış tarihsel barlar — mevcut kotalar

Ağırlıklı kota API key başına; saatlik kota kullanıcı başına

120 ağırlık birimi / dakika + 5.000 istek / saat. İstek ağırlığı 1 + ceil(tahmini bar sayısı / 500). Yeni saniyelik limit eklenmedi

Uygulandığı endpointler

GET /api/v1/market-data/bars
Yanıt başlıkları
Retry-After (429), X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Request-Weight, X-RateLimit-Global-*

Portföy ve gün içi emir sorguları

Kullanıcı + aracı kurum + hesap numarası + endpoint

Her endpoint için hesap numarası başına 1 istek / 3 saniye; endpoint sayaçları ayrıdır

Uygulandığı endpointler

POST /api/v1/accounts/positions POST /api/v1/accounts/daily-orders POST /api/v1/orders/viop/today POST /api/v1/portfolio/viop POST /api/v1/portfolio/viop/positions POST /api/v1/portfolio/viop/collateral
Yanıt başlıkları
Retry-After, X-RateLimit-Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining
Yapılandırma
RateLimiting:PortfolioBrokerWindowInSeconds (broker override: RateLimiting:Brokers:{CODE}:PortfolioWindowInSeconds)

Emir iletimi

Kullanıcı + aracı kurum

Kurum bazında değişir; Marbaş Menkul için dakikada 500 emir

Uygulandığı endpointler

POST /api/v1/orders POST /api/v1/orders/chain POST /api/v1/orders/batch (her kalem 1 emir sayılır) POST /api/v1/orders/viop POST /api/v1/orders/viop/batch (her kalem 1 emir sayılır) POST /api/v1/orders/viop/update POST /api/v1/orders/viop/cancel POST /api/v1/orders/viop/cancel/batch (her kalem 1 emir sayılır) POST /api/v1/oco-orders POST /api/v1/oco-orders/register-pending
Yanıt başlıkları
Retry-After, X-RateLimit-Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining

Kurum bazlı limitler

Portföy okuma ve emir gönderme limitleri aracı kuruma göre değişir.

Aracı kurum Portföy okuma Emir gönderme
Marbaş Menkul Hesap ve endpoint başına 3 saniyede 1 istek Dakikada 500 emir

429 yanıtı

{
  "success": false,
  "message": "İstek limiti aşıldı. Lütfen bekleyin.",
  "retryAfterSeconds": 1,
  "retryAfter": "2026-09-14T10:00:01Z"
}

Retry örneği

async Task<HttpResponseMessage> SendOnceAsync()
{
    using var nextRequest = new HttpRequestMessage(
        HttpMethod.Get,
        "/api/v1/market-data/last-price?symbols=THYAO");
    nextRequest.Headers.Authorization =
        new AuthenticationHeaderValue("Bearer", accessToken);
    return await httpClient.SendAsync(nextRequest);
}

var response = await SendOnceAsync();

if ((int)response.StatusCode == 429)
{
    var retryAfter = response.Headers.RetryAfter?.Delta ?? TimeSpan.FromSeconds(1);
    response.Dispose();
    await Task.Delay(retryAfter);
    response = await SendOnceAsync(); // Her denemede yeni request oluşturulur.
}

using (response)
{
    response.EnsureSuccessStatusCode();
}

Entegre aracı kurumlar

brokerageCode alanı büyük/küçük harfe duyarlıdır.

Aracı kurum brokerageCode
Marbaş Menkul MarbasMenkul