کلید API/api/v1

کالاها

سری زمانی کالاها، ارز، طلا، رمزارز، فلزات و انرژی با کلید API.

دسترسی شریک به تاریخچه شاخص‌های بازار TGJU شامل ارز، طلای داخلی، رمزارز، فلزات و انرژی از طریق کلید API.

Auth: X-API-Key: cdl-724-… یا Authorization: Bearer cdl-724-…
هر کلید فعال API به این سرویس دسترسی دارد؛ مقدار scopes کلید محدودکننده نیست.

هزینه از کیف پول کاربر کسر می‌شود: base_irr + rows_returned × per_row_irr (پیش‌فرض محیط: پایه ۱۰۰۰، به‌ازای هر ردیف ۱۰ ریال). درخواست‌های ناموفق با cost_irr: 0 ثبت می‌شوند.

محدودیت نرخ به‌ازای هر کلید و سرویس (پیش‌فرض): ۶۰ درخواست در دقیقه و ۲۰۰۰ درخواست در ساعت. در صورت عبور از سقف، پاسخ 429 با error_code: rate_limit_exceeded و هدر Retry-After برمی‌گردد.


GET/api/v1/external/timeseries/data

تنها جدول مجاز timeseries است. نام‌های time_series و شکل‌های خط‌تیره‌دار یا فشرده آن نیز به‌عنوان alias پذیرفته می‌شوند. تاریخ‌ها میلادی هستند.

پارامترهای کوئری

ParameterTypeDefaultDescription
table_namestringrequiredباید timeseries یا یکی از aliasهای آن باشد
indicatorsstring[]همه شاخص‌هاستون‌های خروجی؛ پارامتر تکراری یا فهرست جداشده با کاما. slugهای خط‌تیره‌دار TGJU به نام ستون underscore تبدیل می‌شوند
date_startdate (YYYY-MM-DD)noneتاریخ شروع میلادی، شامل همان روز
date_enddate (YYYY-MM-DD)noneتاریخ پایان میلادی، شامل همان روز؛ باید مساوی یا بعد از date_start باشد
order_dirasc | descdescترتیب بر اساس تاریخ. برای نمودار از asc استفاده کنید
pageint1شماره صفحه (≥ 1)
page_sizeintپیش‌فرض سرورتعداد ردیف؛ سقف EXTERNAL_API_MAX_PAGE_SIZE (پیش‌فرض ۱۰۰)

اگر indicators ارسال نشود، همه ستون‌های عمومی بازگردانده می‌شوند. در صورت ارسال، پاسخ فقط شامل date و شاخص‌های درخواستی است. نام ناشناخته با 400 validation_error رد می‌شود. مقادیر عددی به‌صورت JSON number و داده‌های ناموجود به‌صورت null برمی‌گردند؛ ستون‌های داخلی منتشر نمی‌شوند.

شاخص‌های پشتیبانی‌شده

گروهIndicator names
طلای داخلی و سکهgeram18, geram24, mesghal, gold_mini_size, gold_futures, sekeb, sekee, nim, rob, gerami, silver_999
رمزارز (USD)crypto_bitcoin, crypto_ethereum, crypto_dogecoin, crypto_ripple, crypto_tron, crypto_dash, crypto_stellar, crypto_cardano, crypto_litecoin, crypto_solana, crypto_avalanche, crypto_verge, crypto_monero
ارز (IRR)price_dollar_rl, nima_sell_usd, nima_buy_usd, sana_sell_usd, sana_buy_usd, price_eur, nima_buy_eur, nima_sell_eur, sana_sell_eur, sana_buy_eur, bank_eur, nima_buy_gbp, nima_sell_gbp, sana_sell_gbp, sana_buy_gbp, bank_gbp, price_aed, price_gbp, price_sek, price_jpy, price_sar, price_cny, price_rub, price_try
فلزات گران‌بهاons, silver, platinum, palladium
فلزات پایهbasemetal_aluminum, base_global_lead, basemetal_nickel, base_global_zinc, base_global_tin, base_global_copper
انرژیenergy_crude_oil, energy_brent_oil, oil_opec, energy_heating_oil, louisiana_light, energy_london_gas_oil, energy_gasoline_rbob, energy_natural_gas, energy_carbon_emissions, energy_ethanol_futures_contracts, lng_japan_korea_marker

نمونه درخواست

نمونه
curl -G "https://api.codal724.ir/api/v1/external/timeseries/data" \
  --data-urlencode "table_name=timeseries" \
  --data-urlencode "indicators=price_dollar_rl,geram18" \
  --data-urlencode "date_start=2026-09-01" \
  --data-urlencode "date_end=2026-09-14" \
  --data-urlencode "order_dir=asc" \
  --data-urlencode "page=1" \
  --data-urlencode "page_size=20" \
  -H "X-API-Key: cdl-724-…" \
  -H "Accept: application/json"

پاسخ 200

نمونه
{
  "items": [
    {
      "date": "2026-09-01",
      "price_dollar_rl": 1025000.0,
      "geram18": 87500000.0
    }
  ],
  "total": 14,
  "page": 1,
  "page_size": 20,
  "pages": 1,
  "has_next": false,
  "has_prev": false,
  "meta": { "table_name": "timeseries", "mode": null }
}

Headers on success

HeaderMeaning
X-Request-IdCorrelate with usage logs
X-Credits-ChargedIRR charged for this call
X-Wallet-BalanceRemaining wallet balance
X-RateLimit-Limit-MinutePer-key minute limit for this service
X-RateLimit-Remaining-MinuteRemaining calls this minute
X-RateLimit-Limit-HourPer-key hour limit for this service
X-RateLimit-Remaining-HourRemaining calls this hour

ترتیب پیش‌فرض desc است؛ بنابراین اولین ردیف الزاماً قدیمی‌ترین داده نیست. برای نمایش نمودار یا پردازش زمانی، شاخص‌های لازم را انتخاب و order_dir=asc ارسال کنید.

در این نسخه برای به‌روزرسانی Timeseries وب‌هوک ارسال نمی‌شود؛ برای تشخیص به‌روزرسانی، /api/v1/external/health یا همین endpoint را poll کنید.


Errors

error_codeHTTPWhen
invalid_api_key401Missing / unknown key
revoked_api_key401Key revoked
insufficient_credits402Wallet balance too low
key_credit_limit_exceeded402Key spend cap hit
rate_limit_exceeded429Per-key minute/hour limit
rate_limit_unavailable503Redis rate limiter down
invalid_table400Unknown table_name
validation_error400Bad dates, order, indicator names, or pagination
نمونه
{ "error_code": "validation_error", "message": "…" }

(FastAPI may wrap as { "detail": { … } }.)