کلید API/api/v1

کدال

صورت‌های مالی و افشاهای کدال (سود و زیان، ترازنامه، جریان نقد، تولید و فروش و …) با کلید API.

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

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

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


GET/api/v1/external/codal/data

همان فیلترهای خواندن همگام‌سازی کدال عمومی؛ page_size شریک علاوه بر آن با EXTERNAL_API_MAX_PAGE_SIZE محدود است (پیش‌فرض ۱۰۰).

جداول (table_name)

نام جدول به‌صورت case-insensitive است؛ خط تیره و نام‌های فشرده مثل IncomeStatement هم پذیرفته می‌شوند.

table_nameDescription (EN)Description (FA)
income_statementIncome statement line items (profit and loss)صورت سود و زیان — اقلام سود و زیان
balanceBalance sheet line itemsترازنامه — اقلام دارایی، بدهی و حقوق صاحبان سهام
cashflowCash flow statement line itemsصورت جریان وجوه نقد
buy_raw_materialRaw material purchase disclosuresخرید مواد اولیه
energyEnergy consumption disclosuresمصرف انرژی
source_uses_currencyForeign-currency sources and usesمنابع و مصارف ارزی
production_and_salesProduction and sales disclosuresتولید و فروش
announcementsQualitative Codal disclosuresافشاهای کیفی کدال

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

Required

ParameterTypeDescription
table_namestringجدول هدف (جدول بالا)

Mode

ParameterTypeDefaultDescription
moderows | symbolsrowsrows = ردیف‌های داده‌ای صفحه‌بندی‌شده. symbols = فهرست متمایز نمادها (بدون صفحه‌بندی؛ page / page_size نادیده گرفته می‌شود)

Symbol filters

پارامترهای تکرارپذیر؛ مقدار جداشده با کاما در یک پارامتر هم پشتیبانی می‌شود (symbols=فولاد,شپنا&symbols=فملی).

ParameterTypeDescription
symbolsstring[]تطابق دقیق روی symbol افشا (در صورت وجود ستون)
main_symbolsstring[]تطابق دقیق روی main_symbol والد (در صورت وجود)

Date and time filters

فقط وقتی جدول هدف ستون متناظر را داشته باشد اعمال می‌شوند؛ وگرنه نادیده گرفته می‌شوند. اگر هر دو ابتدا و انتها ست شوند، start باید ≤ end باشد.

ParameterTypeColumnDescription
period_startdate (YYYY-MM-DD)periodدوره گزارش ≥ شروع
period_enddateperiodدوره گزارش ≤ پایان
finance_year_startdatefinance_yearشروع سال مالی ≥
finance_year_enddatefinance_yearپایان سال مالی ≤
publish_date_startdatetime (ISO 8601)publish_dateزمان انتشار کدال ≥
publish_date_enddatetimepublish_dateزمان انتشار کدال ≤
updated_at_startdatetimeupdated_atآخرین همگام‌سازی ردیف ≥
updated_at_enddatetimeupdated_atآخرین همگام‌سازی ردیف ≤

Numeric and enum filters

ParameterTypeApplies toDescription
reporting_typeintegerFact tables (production_and_sales, buy_raw_material, energy, source_uses_currency)تطابق دقیق کد دسته گزارش‌دهی شرکت
report_typestringannouncementsتطابق دقیق برچسب نوع افشا

Text filters (case-insensitive substring, ILIKE %value%)

فقط وقتی ستون روی جدول هدف وجود داشته باشد.

ParameterTables
itemincome_statement, balance, cashflow, source_uses_currency
product_nameproduction_and_sales
material_namebuy_raw_material
energy_typeenergy
industryenergy
classificationenergy
currency_typesource_uses_currency
categorysource_uses_currency

Sorting

ParameterTypeDefaultAllowed values
order_bystringperiodperiod, publish_date, updated_at, id, id_legacy, symbol
order_dirstringdescasc, desc

Pagination (mode=rows only)

ParameterTypeDefaultDescription
pageint1شماره صفحه (≥ 1)
page_sizeintمعمولاً ۲۰تعداد آیتم در صفحه (≥ 1). سقف مؤثر min(MAX_PAGE_SIZE, EXTERNAL_API_MAX_PAGE_SIZE) (پیش‌فرض شریک ۱۰۰)

Headers on success

HeaderMeaning
X-Request-Idهمبستگی با usage logs
X-Credits-Chargedریال کسرشده برای این فراخوانی
X-Wallet-Balanceموجودی باقی‌مانده کیف پول
X-RateLimit-Limit-Minuteسقف درخواست در دقیقه برای این سرویس
X-RateLimit-Remaining-Minuteباقی‌مانده در این دقیقه
X-RateLimit-Limit-Hourسقف درخواست در ساعت برای این سرویس
X-RateLimit-Remaining-Hourباقی‌مانده در این ساعت

Examples

صورت سود و زیان برای یک نماد:

نمونه
curl -G "https://api.codal724.ir/api/v1/external/codal/data" \
  --data-urlencode "table_name=income_statement" \
  --data-urlencode "symbols=فولاد" \
  --data-urlencode "page=1" \
  --data-urlencode "page_size=20" \
  -H "X-API-Key: cdl-724-…" \
  -H "Accept: application/json"

جریان وجوه نقد با فیلتر دوره:

نمونه
curl -G "https://api.codal724.ir/api/v1/external/codal/data" \
  --data-urlencode "table_name=cashflow" \
  --data-urlencode "symbols=فولاد" \
  --data-urlencode "period_start=2024-01-01" \
  --data-urlencode "period_end=2024-12-31" \
  --data-urlencode "order_by=period" \
  --data-urlencode "order_dir=desc" \
  -H "X-API-Key: cdl-724-…" \
  -H "Accept: application/json"

خرید مواد اولیه با فیلتر متنی:

نمونه
curl -G "https://api.codal724.ir/api/v1/external/codal/data" \
  --data-urlencode "table_name=buy_raw_material" \
  --data-urlencode "symbols=فولاد" \
  --data-urlencode "material_name=سنگ" \
  --data-urlencode "mode=rows" \
  --data-urlencode "page=1" \
  --data-urlencode "page_size=50" \
  -H "X-API-Key: cdl-724-…" \
  -H "Accept: application/json"

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 query params
نمونه
{ "error_code": "insufficient_credits", "message": "…" }

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