dokümantasyon

API dokümantasyonu

oktasoft REST API: hava durumu, tarım ve IoT veri servisleri. Her uçta “Dene” ile isteği hesabınızdan gönderebilirsiniz.

Kalıplarla dene

Aramanızla eşleşen uç bulunamadı.

Hızlı Başlangıç

Hesap oluşturun — kayıt formunu doldurun, email doğrulama linkine tıklayın.

Token üretin — Token'larım sayfasından yeni token oluşturun. Scope seçin: read / write / full.

İlk isteği gönderin:

curl -s https://api.oktasoft.com/api/v1/ping # → {"pong": true} curl -s https://api.oktasoft.com/api/v1/weather/current?city=Istanbul \ -H "Authorization: Bearer okt_<token>" # → {"location": {"city": "Istanbul", ...}, "temperature": 18.3, ...}
Kimlik Doğrulama

Tüm /api/v1/* endpoint'leri (ping hariç) Bearer token gerektirir. Her istekte Authorization header'ı gönderilmelidir:

Authorization: Bearer okt_<tokeniniz>

Token'larınızı Token'larım sayfasından yönetin. Her hesaba birden fazla token ekleyebilirsiniz.

Base URL
https://api.oktasoft.com
Format
JSON (Content-Type: application/json)
Karakter seti
UTF-8
Swagger UI
Planlar & Limitler
Özellik Free Starter Pro
Fiyat 0 ₺ 149 ₺/ay 349 ₺/ay
Günlük İstek 50 10,000 100,000
/weather/current ✓ ✓ ✓
/weather/forecast, /hourly, /historical — ✓ ✓
/agri/field, /soil, /et0, /frost, /forecast — ✓ ✓
/agri/irrigation, /gdd — — ✓
/iot/* (tüm IoT endpoint'leri) — — ✓
/fx/today, /calendar/*, /quake/recent (24 sa, 20 kayıt) ✓ ✓ ✓
/fx/date, /quake/recent (30 gün, 500 kayıt) — ✓ ✓
/marine, /air/current, /solar/forecast — ✓ ✓
/agri/soil-moisture — ✓ ✓
/agri/satellite, /agri/satellite/map (parsel uydu analizi ve haritası) — — ✓
/water/river, /solar/yearly — — ✓

Planınızı yükseltmek için: /pricing. API kontörü varsa, planınıza dahil olmayan uçlar ve günlük limit sonrası istekler kontörden karşılanır (başarılı istek başına 1); bakiye GET /api/v1/usage yanıtında kontor_balance alanındadır.

Token Scope
ScopeAçıklamaKullanım
read Sadece GET endpoint'leri Salt okunur dashboard, veri görüntüleme
write POST + GET endpoint'leri IoT cihazından sensör yazma (/iot/write)
full Tüm endpoint'ler Tam erişim gerektiğinde
Hata Kodları
HTTPerrorAçıklama
200—Başarılı
401unauthorizedAuthorization header eksik
401invalid_tokenToken geçersiz veya devre dışı
403plan_requiredBu endpoint için planınız yetersiz
403insufficient_scopeToken scope'u yetki vermiyor
404not_foundİstenen kayıt bulunamadı
422invalid_dataGönderilen veri geçersiz
429rate_limit_exceededGünlük istek limitine ulaşıldı (gece 00:00 UTC sıfırlanır)
502query_failed / write_failedVeri kaynağı geçici olarak yanıt vermedi

Örnek 403 yanıtı

{ "error": "plan_required", "message": "Bu endpoint icin Starter veya uzeri plan gereklidir.", "your_plan": "Free", "required_plan": "Starter", "upgrade_url": "https://api.oktasoft.com/plan" }
Genel Endpoint'ler
GET /api/v1/ping Token gerektirmez — servis sağlık kontrolü Herkese açık

Yanıt

{ "pong": true }
GET /api/v1/me Hesap ve token bilgisi Tüm planlar

Örnek Yanıt

{ "user_id": "3f7a1...", "plan": "Pro", "token_id": "8d2e4...", "scope": "full" }
GET /api/v1/usage Bugünkü istek kullanımı Tüm planlar

Örnek Yanıt

{ "used": 47, "limit": 100000, "resets_at": "midnight UTC", "plan": "Pro" }
Hava Durumu API
GET /api/v1/weather/current Anlık hava durumu Free+

Query Parametreleri

ParametreZorunluAçıklama
citycity veya lat/lonŞehir adı (ör. "Istanbul", "Ankara")
latcity veya lat/lonEnlem (ör. 39.92)
loncity veya lat/lonBoylam (ör. 32.85)

Örnek İstek

curl "https://api.oktasoft.com/api/v1/weather/current?city=Ankara" \ -H "Authorization: Bearer okt_<token>"

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "temperature": 22.9, "feels_like": 21.7, "dew_point": 12.2, "humidity": 51, "wind_speed_ms": 3.45, "wind_direction": 170, "pressure_hpa": 1002.8, "precipitation_mm": 0.0, "uv_index": 0.8, "visibility_m": 41120.0, "is_day": true, "condition": { "code": 1, "description_tr": "Cogunlukla acik", "description_en": "Mainly clear", "icon": "sunny" }, "timestamp": "2026-10-15T17:15", "source": "open-meteo" }
GET /api/v1/weather/forecast Günlük tahmin (max 16 gün) Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
citycity veya lat/lon—Şehir adı
latcity veya lat/lon—Enlem
loncity veya lat/lon—Boylam
daysHayır7Tahmin günü sayısı (1–16)

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "days": 3, "forecast": [ { "date": "2026-10-15", "temp_max": 25.1, "temp_min": 16.6, "precipitation_mm": 2.7, "precipitation_probability": 70, "wind_speed_max_ms": 4.2, "wind_direction_dominant": 341, "uv_index_max": 4.8, "sunrise": "2026-10-15T07:04", "sunset": "2026-10-15T18:20", "condition": { "code": 80, "description_tr": "Hafif saganak", "description_en": "Slight showers", "icon": "showers" } }, { "date": "2026-10-16", "temp_max": 21.6, "temp_min": 15.5, "precipitation_mm": 15.1, "precipitation_probability": 98, "wind_speed_max_ms": 3.67, "wind_direction_dominant": 142, "uv_index_max": 5.0, "sunrise": "2026-10-16T07:05", "sunset": "2026-10-16T18:19", "condition": { "code": 95, "description_tr": "Gok gurultulu", "description_en": "Thunderstorm", "icon": "thunderstorm" } }, … ], "source": "open-meteo" }
GET /api/v1/weather/hourly Saatlik veri (belirli bir tarih için) Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
citycity veya lat/lon—Şehir adı
lat / loncity veya lat/lon—Koordinat
dateHayırBugünYYYY-MM-DD formatında tarih

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "date": "2026-10-15", "hourly": [ { "time": "2026-10-15T00:00", "temperature": 17.1, "feels_like": 17.4, "humidity": 89, "wind_speed_ms": 2.6, "precipitation_mm": 0.8, "precipitation_probability": 70, "condition": { "code": 80, "description_tr": "Hafif saganak", "description_en": "Slight showers", "icon": "showers" } }, { "time": "2026-10-15T01:00", "temperature": 17.0, "feels_like": 17.4, "humidity": 89, "wind_speed_ms": 2.34, "precipitation_mm": 0.3, "precipitation_probability": 48, "condition": { "code": 80, "description_tr": "Hafif saganak", "description_en": "Slight showers", "icon": "showers" } }, … ], "source": "open-meteo" }
GET /api/v1/weather/historical Geçmiş hava verisi Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
city / lat / lonEvet—Konum
start_dateHayır7 gün önceYYYY-MM-DD
end_dateHayırDünYYYY-MM-DD

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "start_date": "2026-10-08", "end_date": "2026-10-14", "records": [ { "date": "2026-10-08", "temp_max": 26.4, "temp_min": 16.0, "precipitation_mm": 1.0, "wind_speed_max_ms": 3.93, "uv_index_max": null, "condition": { "code": 51, "description_tr": "Hafif ciselemeli", "description_en": "Light drizzle", "icon": "drizzle" } }, { "date": "2026-10-09", "temp_max": 28.3, "temp_min": 14.5, "precipitation_mm": 0.0, "wind_speed_max_ms": 3.35, "uv_index_max": null, "condition": { "code": 1, "description_tr": "Cogunlukla acik", "description_en": "Mainly clear", "icon": "sunny" } }, … ], "source": "open-meteo-archive" }
Tarım API (Agri)
GET /api/v1/agri/field Tarlaya özgü birleşik veri (hava + toprak + ET₀ + don + sulama) Starter+

Query Parametreleri

ParametreZorunluAçıklama
city / lat / lonEvetTarla konumu

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "air": { "temperature": 22.9, "feels_like": 21.7, "humidity": 51, "dew_point": 12.2, "wind_speed_ms": 3.45, "wind_direction": 170, "pressure_hpa": 1002.8, "is_day": true }, "soil": { "temperature_0cm": 17.6, "temperature_6cm": 18.2, "temperature_18cm": 21.4, "moisture_0_1cm": 0.265, "moisture_1_3cm": 0.266, "moisture_3_9cm": 0.271, "measurement_time": "2026-10-20T23:00", "source": "model" }, "agri": { "et0_today_mm": 3.22, "precipitation_today_mm": 2.7, "irrigation_needed": true, "irrigation_mm": 0.52, "irrigation_urgency": "low", "frost_risk_today": "none", "frost_alert": false, "frost_alert_date": null, "gdd_today": 10.85 }, "timestamp": "2026-10-15T17:15", "source": "open-meteo" }
GET /api/v1/agri/soil Toprak sıcaklığı ve nem verisi Starter+

Query Parametreleri

ParametreZorunluAçıklama
city / lat / lonEvetKonum

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "soil": { "temperature_0cm": 20.4, "temperature_6cm": 20.5, "temperature_18cm": 22.3, "moisture_0_1cm": 0.372, "moisture_1_3cm": 0.373, "moisture_3_9cm": 0.375, "measurement_time": "2026-10-16T23:00", "source": "model" }, "source": "open-meteo" }
GET /api/v1/agri/et0 Potansiyel evapotranspirasyon (FAO-56 Penman-Monteith) Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
city / lat / lonEvet—Konum
daysHayır7Gün sayısı (1–16)

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "days": 3, "total_et0_mm": 7.78, "total_precipitation_mm": 19.8, "total_net_water_need_mm": 0.0, "records": [ { "date": "2026-10-15", "et0_mm": 3.22, "precipitation_mm": 2.7, "net_water_need_mm": 0.52, "temp_max": 25.1, "temp_min": 16.6 }, { "date": "2026-10-16", "et0_mm": 2.24, "precipitation_mm": 15.1, "net_water_need_mm": 0.0, "temp_max": 21.6, "temp_min": 15.5 }, … ], "source": "open-meteo" }
GET /api/v1/agri/frost 7 günlük don riski tahmini ve uyarıları Starter+

Risk Seviyeleri

SeviyeMin SıcaklıkAçıklama
critical≤ 0°CDon oluşumu, acil önlem gerekli
high≤ 2°CYüksek don riski
medium≤ 4°COrta risk, izle
low≤ 6°CDüşük risk
none> 6°CDon riski yok

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "overall_risk": "none", "alert": null, "forecast": [ { "date": "2026-10-15", "min_temp": 16.6, "max_temp": 25.1, "risk": "none", "label_tr": "Don riski yok", "precipitation_mm": 2.7 }, { "date": "2026-10-16", "min_temp": 15.5, "max_temp": 21.6, "risk": "none", "label_tr": "Don riski yok", "precipitation_mm": 15.1 }, … ], "source": "open-meteo" }
GET /api/v1/agri/irrigation Günlük sulama tavsiyesi (ET₀ − yağış) Pro+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
city / lat / lonEvet—Konum
daysHayır7Gün sayısı

Aciliyet Seviyeleri

AciliyetNet Su İhtiyacı
none≤ 0 mm (yağmur yeterliydi)
low0–2 mm
medium2–5 mm
high> 5 mm

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "days": 3, "summary": { "total_et0_mm": 7.78, "total_precipitation_mm": 19.8, "total_irrigation_mm": 0.84 }, "records": [ { "date": "2026-10-15", "et0_mm": 3.22, "precipitation_mm": 2.7, "net_water_need_mm": 0.52, "irrigation_mm": 0.52, "advice": "Hafif sulama onerilir", "urgency": "low" }, { "date": "2026-10-16", "et0_mm": 2.24, "precipitation_mm": 15.1, "net_water_need_mm": -12.86, "irrigation_mm": 0.0, "advice": "Sulama gerekli degil", "urgency": "none" }, … ], "source": "open-meteo" }
GET /api/v1/agri/gdd Büyüme gün derecesi (Growing Degree Day) Pro+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
city / lat / lonEvet—Konum
daysHayır7Gün sayısı
base_tempHayır10.0Baz sıcaklık °C (buğday=0, mısır=10)

GDD Formülü

# GDD = max(0, (T_max + T_min) / 2 − T_base)

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "base_temp": 10.0, "days": 3, "total_gdd": 29.2, "records": [ { "date": "2026-10-15", "gdd": 10.85, "cumulative": 10.85, "temp_max": 25.1, "temp_min": 16.6 }, { "date": "2026-10-16", "gdd": 8.55, "cumulative": 19.4, "temp_max": 21.6, "temp_min": 15.5 }, … ], "source": "open-meteo" }
GET /api/v1/agri/forecast 7 günlük kapsamlı tarımsal tahmin Starter+

Query Parametreleri

ParametreZorunluAçıklama
city / lat / lonEvetKonum

Örnek yanıt · gerçek çıktı, Antalya, 15.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.90812, "lon": 30.69556, "city": "Antalya", "timezone": "Europe/Istanbul" }, "days": 3, "forecast": [ { "date": "2026-10-15", "temp_max": 25.1, "temp_min": 16.6, "gdd": 10.85, "et0_mm": 3.22, "precipitation_mm": 2.7, "precipitation_probability": 70, "irrigation_mm": 0.52, "irrigation_urgency": "low", "frost_risk": "none", "frost_label_tr": "Don riski yok", "wind_speed_max_ms": 4.2, "sunrise": "2026-10-15T07:04", "sunset": "2026-10-15T18:20" }, { "date": "2026-10-16", "temp_max": 21.6, "temp_min": 15.5, "gdd": 8.55, "et0_mm": 2.24, "precipitation_mm": 15.1, "precipitation_probability": 98, "irrigation_mm": 0.0, "irrigation_urgency": "none", "frost_risk": "none", "frost_label_tr": "Don riski yok", "wind_speed_max_ms": 3.67, "sunrise": "2026-10-16T07:05", "sunset": "2026-10-16T18:19" }, … ], "source": "open-meteo" }
IoT Data API
Veri zaman serisi olarak saklanır. Her yazma ve sorgu yalnız kendi hesabınızın verisini görür; diğer kullanıcıların verisine erişilemez. Tüm endpoint'ler Pro+ plan gerektirir.
POST /api/v1/iot/write Sensör verisini yazar Pro+ · write/full scope

Request Body (JSON)

AlanTürZorunluAçıklama
device_idstringEvetCihaz kimliği (ör. "TR-FLD-001"), max 100 karakter
measurementsobjectEvetAlan→değer sözlüğü (sayısal değerler)
timestampstringHayırISO 8601 (ör. "2026-04-06T14:00:00Z"), boşsa sunucu zamanı

Desteklenen Alanlar

AlanBirimAçıklama
soil_temp°CToprak sıcaklığı (0 cm)
soil_temp_6cm°CToprak sıcaklığı (6 cm)
soil_temp_18cm°CToprak sıcaklığı (18 cm)
soil_moisturem³/m³Toprak nemi (hacimsel)
air_temp°CHava sıcaklığı
humidity%Bağıl nem
dew_point°CÇiğ noktası
pressure_hpahPaAtmosfer basıncı
wind_speed_msm/sRüzgar hızı
rainfall_mmmmYağış miktarı
uv_index—UV indeksi
light_luxluxIşık yoğunluğu
co2_ppmppmCO₂ konsantrasyonu
battery_pct%Batarya yüzdesi
rssidBmSinyal gücü

Örnek İstek

curl -X POST "https://api.oktasoft.com/api/v1/iot/write" \ -H "Authorization: Bearer okt_<token>" \ -H "Content-Type: application/json" \ -d '{ "device_id": "TR-FLD-001", "measurements": { "soil_temp": 16.2, "soil_moisture": 0.28, "air_temp": 18.5, "humidity": 55.0, "battery_pct": 87.0 }, "timestamp": "2026-04-06T14:00:00Z" }'

Örnek Yanıt

{ "written": true, "device_id": "TR-FLD-001", "fields": ["soil_temp", "soil_moisture", "air_temp", "humidity", "battery_pct"], "field_count": 5, "timestamp": "2026-04-06T14:00:00+00:00" }
GET /api/v1/iot/query Sensör verisini sorgular Pro+

Query Parametreleri

ParametreVarsayılanAçıklama
device_id—Cihaz ID filtresi (boşsa tüm cihazlar)
start-24hBaşlangıç: -24h, -7d, 2026-04-01T00:00:00Z
endnow()Bitiş: now() veya ISO tarih
window—Gruplama aralığı: 5m, 1h, 1d (ortalama alır)
fields—Virgülle ayrılmış alan listesi: soil_temp,humidity

Örnek İstek

curl "https://api.oktasoft.com/api/v1/iot/query?device_id=TR-FLD-001&start=-7d&window=1h" \ -H "Authorization: Bearer okt_<token>"

Örnek Yanıt

{ "device_id": "TR-FLD-001", "start": "-7d", "end": "now()", "window": "1h", "count": 168, "records": [ { "time": "2026-04-06T00:00:00+00:00", "device_id": "TR-FLD-001", "soil_temp": 14.1, "air_temp": 9.8 }, ... ] }
GET /api/v1/iot/devices Hesaba kayıtlı cihazları listeler Pro+

Örnek Yanıt

{ "count": 2, "devices": [ { "device_id": "TR-FLD-001", "name": null, "last_seen": "2026-04-06T14:00:00+00:00", "registered": "2026-04-05T09:12:00+00:00" }, ... ] }
GET /api/v1/iot/devices/{device_id}/last Cihazın en son ölçümü (son 30 gün) Pro+

Path Parametresi

ParametreAçıklama
device_idCihaz kimliği (ör. TR-FLD-001)

Örnek İstek

curl "https://api.oktasoft.com/api/v1/iot/devices/TR-FLD-001/last" \ -H "Authorization: Bearer okt_<token>"

Örnek Yanıt

{ "time": "2026-04-06T14:00:00+00:00", "device_id": "TR-FLD-001", "soil_temp": 16.8, "soil_moisture": 0.27, "air_temp": 19.1, "humidity": 53.0, "battery_pct": 86.0 }
GET /api/v1/iot/devices/{device_id}/summary Son 24 saat min/mean/max istatistikler Pro+

Örnek İstek

curl "https://api.oktasoft.com/api/v1/iot/devices/TR-FLD-001/summary" \ -H "Authorization: Bearer okt_<token>"

Örnek Yanıt

{ "device_id": "TR-FLD-001", "period": "last_24h", "stats": { "soil_temp": { "min": 14.1, "mean": 15.9, "max": 17.3 }, "soil_moisture": { "min": 0.24, "mean": 0.27, "max": 0.31 }, "air_temp": { "min": 9.8, "mean": 14.6, "max": 19.1 }, "battery_pct": { "min": 85.0, "mean": 86.2, "max": 87.0 } } }
Veri Kaydedici (datalogger)
Panelden (Kaydediciler) bir kaydedici açın, saklama süresini seçin (1 / 7 / 15 / 30 / 90 gün). İki anahtar verilir: olw_… cihaza girilir ve yalnız yazar; olr_… veriyi çekecek kişiye/yazılıma verilir ve yalnız okur. Hesap token'ı (okt_) gerekmez, API istek kotanızdan düşmez. Süresi dolan veri kendiliğinden silinir. Anahtar X-Logger-Key başlığında, Authorization: Bearer ile ya da ?key= parametresiyle verilir.
FreeStarterPro
Kaydedici1525
En uzun saklama1 gün15 gün90 gün
Günlük satır (kaydedici başına)1.44050.000500.000
Günlük okuma2005.00050.000
CSV / Excel—✓✓

Kaydedici başına en fazla 32 alan ve 20 cihaz; istekte en fazla 1000 satır. Değerler sayı ya da true/false (1/0 olarak saklanır); metin kaydedilmez. Alan ve cihaz adları: harf, rakam, _ . -, en fazla 40 karakter. Sayaçlar gece yarısı (UTC) sıfırlanır.

POST /api/v1/logger/write Veri yazar (tek ya da toplu) olw_ anahtarı

Gövde biçimleri

BiçimÖrnek
Düz{"sicaklik": 22.5, "nem": 41}
Tek satır{"device": "pompa1", "t": "2026-11-02T08:00:00Z", "data": {"basinc": 3.2}}
Toplu{"rows": [{"t": 1793606400, "data": {…}}, …]}

t boşsa sunucu zamanı; ISO 8601 ya da epoch (saniye/ms). Saklama süresinden eski ya da 10 dakikadan ileri zamanlı satır reddedilir. device isteğe bağlı.

Örnek İstek

curl -X POST "https://api.oktasoft.com/api/v1/logger/write" \ -H "X-Logger-Key: olw_<anahtar>" \ -H "Content-Type: application/json" \ -d '{"device": "pompa1", "data": {"sicaklik": 22.5, "calisiyor": true}}'

Örnek Yanıt

{ "ok": true, "rows": 1, "today": 418, "limit": 50000 }
GET /api/v1/logger/w Basit cihazlar için GET ile yazma olw_ anahtarı

Yalnız HTTP GET atabilen modemler (SIM800 vb.) için. key, device, t dışındaki her parametre bir alandır; ondalık için nokta ya da virgül.

https://api.oktasoft.com/api/v1/logger/w?key=olw_<anahtar>&device=kuyu2&seviye=4.75&akim=12.1
GET /api/v1/logger/data Veriyi toplu okur (JSON / CSV / Excel) olr_ anahtarı

Query Parametreleri

ParametreVarsayılanAçıklama
start-24h-30m, -24h, -7d ya da 2026-11-01T00:00:00Z
endşimdiAynı biçim
fieldstümüVirgülle: sicaklik,nem
devicetümüTek cihaz
window—Gruplama: 5m, 1h, 1d
aggmeanmean, min, max, last, sum (window ile)
limit1000En fazla 10000. Daha fazlası varsa truncated: true ve next_start döner; sonraki sayfa için start=next_start.
formatjsoncsv (virgül) ya da excel (Türkçe Excel: ; ayraç, ondalık virgül) — Starter+

Örnek İstek

curl "https://api.oktasoft.com/api/v1/logger/data?start=-7d&window=1h" \ -H "X-Logger-Key: olr_<anahtar>"

Örnek Yanıt

{ "logger": "sera-1", "count": 168, "truncated": false, "next_start": null, "fields": ["sicaklik", "nem"], "rows": [ { "t": "2026-11-01T08:00:00Z", "device": "pompa1", "sicaklik": 21.4, "nem": 44.0 }, ... ] }
GET /api/v1/logger/info Kaydedici bilgisi ve bugünkü kullanım olw_ ya da olr_

Ad, geçerli saklama süresi, görülen alanlar ve cihazlar, son yazma zamanı, bugünkü yazma/okuma sayısı ve sınırlar. Cihaz açılışta anahtarını doğrulamak için kullanabilir.

Döviz API (TCMB)

Kaynak: T.C. Merkez Bankası gösterge niteliğindeki kurlar. Bankaların uyguladığı kurlar farklı olabilir.

GET /api/v1/fx/today TCMB gösterge kurları — son bülten Free+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
codesHayırtümüISO 4217 kodları, virgülle (USD,EUR,GBP…)

Örnek yanıt · gerçek çıktı, TCMB, bülten 15.10.2026, 16.10.2026 · listeler kısaltıldı

{ "bulletin_date": "2026-10-15", "bulletin_no": "2026/195", "rates": { "USD": { "name_tr": "ABD DOLARI", "name_en": "US DOLLAR", "unit": 1, "forex_buying": 49.3315, "forex_selling": 49.4204, "banknote_buying": 49.297, "banknote_selling": 49.4945 }, "EUR": { "name_tr": "EURO", "name_en": "EURO", "unit": 1, "forex_buying": 55.3113, "forex_selling": 55.411, "banknote_buying": 55.2726, "banknote_selling": 55.4941 } }, "base": "TRY", "source": { "name": "T.C. Merkez Bankası gösterge niteliğindeki döviz kurları", "url": "https://www.tcmb.gov.tr", "license": "Kamuya açık veri; kaynak gösterilerek" }, "notice": "Gösterge niteliğindedir; bankaların uyguladığı kurlar farklı olabilir." }
GET /api/v1/fx/date Belirli günün TCMB kurları (1996'dan bugüne) Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
dateEvet—YYYY-AA-GG; hafta sonu/tatilde önceki yayın günü döner (bulletin_date)
codesHayırtümüISO kodları

Örnek yanıt · gerçek çıktı, 11.10.2026 Pazar isteği → 09.10.2026 bülteni, 16.10.2026 · listeler kısaltıldı

{ "bulletin_date": "2026-10-09", "bulletin_no": "2026/191", "rates": { "USD": { "name_tr": "ABD DOLARI", "name_en": "US DOLLAR", "unit": 1, "forex_buying": 49.1274, "forex_selling": 49.216, "banknote_buying": 49.0931, "banknote_selling": 49.2898 } }, "requested_date": "2026-10-11", "base": "TRY", "source": { "name": "T.C. Merkez Bankası gösterge niteliğindeki döviz kurları", "url": "https://www.tcmb.gov.tr", "license": "Kamuya açık veri; kaynak gösterilerek" } }
Deprem API

Kaynak: USGS (kamu malı); AFAD verisi izin sonrası source=afad ile. Zamanlar UTC. Can güvenliği kararlarında resmî duyurular esastır.

GET /api/v1/quake/recent Son depremler; konum çevresinde yarıçap filtresi Free+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
hoursHayır24Geriye dönük saat (Free ≤ 24, Starter+ ≤ 720)
min_magHayır2.5En küçük büyüklük
limitHayır20Kayıt sayısı (Free ≤ 20, Starter+ ≤ 500)
lat / lonHayır—Verilirse her kayda distance_km eklenir
radius_kmHayır—lat/lon çevresinde yarıçap (≤ 2000)
sourceHayırotomatikusgs ya da afad (AFAD izin sonrası açılır)

Örnek yanıt · gerçek çıktı, İzmir çevresi 800 km, son 24 saat, 16.10.2026 · listeler kısaltıldı

{ "window": { "start_utc": "2026-10-15T10:07:28Z", "end_utc": "2026-10-16T10:07:28Z", "hours": 24 }, "min_magnitude": 3.5, "count": 0, "events": [], "source": { "name": "USGS Earthquake Hazards Program", "url": "https://earthquake.usgs.gov", "license": "Kamu malı (public domain)" }, "notice": "Bilgi amaçlıdır; acil durum ve can güvenliği kararlarında resmî kurum duyuruları esastır." }
Deniz API

Kaynak: Open-Meteo Marine (CC BY 4.0). Seyir güvenliği için resmî uyarılar esastır.

GET /api/v1/marine Dalga, ölü dalga, deniz suyu sıcaklığı, akıntı Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet*—Enlem / boylam (ondalık derece)
cityHayır—lat/lon yerine şehir adı
daysHayır3Günlük tahmin (1–7)

* Konum: lat ve lon birlikte ya da city.

Örnek yanıt · gerçek çıktı, Antalya Körfezi, 16.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.791664, "lon": 30.708344, "timezone": "Europe/Istanbul" }, "current": { "time": "2026-10-16T13:00", "interval": 900, "wave_height": 0.22, "wave_direction": 176, "wave_period": 4.7, "wind_wave_height": 0.02, "swell_wave_height": 0.22, "swell_wave_direction": 176, … }, "current_units": { "time": "iso8601", "interval": "seconds", "wave_height": "m", "wave_direction": "°", "wave_period": "s", "wind_wave_height": "m", "swell_wave_height": "m", "swell_wave_direction": "°", … }, "daily": [ { "time": "2026-10-16", "wave_height_max": 0.34, "wave_direction_dominant": 176, "wave_period_max": 4.9, "swell_wave_height_max": 0.32, "wind_wave_height_max": 0.1 }, { "time": "2026-10-17", "wave_height_max": 1.06, "wave_direction_dominant": 178, "wave_period_max": 5.15, "swell_wave_height_max": 0.98, "wind_wave_height_max": 0.88 } ], "daily_units": { "time": "iso8601", "wave_height_max": "m", "wave_direction_dominant": "°", "wave_period_max": "s", "swell_wave_height_max": "m", "wind_wave_height_max": "m" }, "source": { "name": "Open-Meteo", "url": "https://open-meteo.com", "license": "CC BY 4.0", "upstream": "DWD, ECMWF, Météo-France, Copernicus Marine" }, "notice": "Seyir güvenliği için resmî denizcilik uyarıları (Kıyı Emniyeti, MGM) esastır." }
Hava Kalitesi API

Kaynak: Open-Meteo / Copernicus CAMS (CC BY 4.0). Model tahminidir; resmî istasyon ölçümü değildir.

GET /api/v1/air/current AQI, PM10, PM2.5, NO₂, O₃, SO₂, CO, toz, UV Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet*—Enlem / boylam (ondalık derece)
cityHayır—lat/lon yerine şehir adı

* Konum: lat ve lon birlikte ya da city.

Örnek yanıt · gerçek çıktı, İstanbul, 16.10.2026 · listeler kısaltıldı

{ "location": { "lat": 41.0, "lon": 29.0, "timezone": "Europe/Istanbul" }, "current": { "time": "2026-10-16T13:00", "interval": 3600, "european_aqi": 21, "us_aqi": 51, "pm10": 8.4, "pm2_5": 5.7, "nitrogen_dioxide": 6.0, "ozone": 56.0, … }, "current_units": { "time": "iso8601", "interval": "seconds", "european_aqi": "EAQI", "us_aqi": "USAQI", "pm10": "μg/m³", "pm2_5": "μg/m³", "nitrogen_dioxide": "μg/m³", "ozone": "μg/m³", … }, "european_aqi_band": { "tr": "makul", "en": "fair" }, "source": { "name": "Open-Meteo", "url": "https://open-meteo.com", "license": "CC BY 4.0", "upstream": "Copernicus Atmosphere Monitoring Service (CAMS)" }, "notice": "Model tahminidir (≈11 km çözünürlük); resmî ölçüm istasyonu değeri değildir." }
Su API

Kaynak: Open-Meteo Flood / Copernicus GloFAS (CC BY 4.0). Taşkın uyarıları için DSİ/AFAD duyuruları esastır.

GET /api/v1/water/river Akarsu debisi: son 7 gün + tahmin topluluğu Pro

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet—Nehir yatağına yakın nokta
daysHayır14Tahmin günü (1–30)

Örnek yanıt · gerçek çıktı, Kızılırmak, Bafra, 16.10.2026 · listeler kısaltıldı

{ "location": { "lat": 41.225006, "lon": 36.325012 }, "units": { "time": "iso8601", "river_discharge": "m³/s", "river_discharge_mean": "m³/s", "river_discharge_median": "m³/s", "river_discharge_max": "m³/s", "river_discharge_min": "m³/s" }, "past": [ { "time": "2026-10-09", "river_discharge": 0.34, "river_discharge_mean": 0.34, "river_discharge_median": 0.34, "river_discharge_max": 0.34, "river_discharge_min": 0.34 }, { "time": "2026-10-10", "river_discharge": 0.33, "river_discharge_mean": 0.33, "river_discharge_median": 0.33, "river_discharge_max": 0.33, "river_discharge_min": 0.33 }, … ], "forecast": [ { "time": "2026-10-16", "river_discharge": 0.38, "river_discharge_mean": 0.4, "river_discharge_median": 0.39, "river_discharge_max": 0.52, "river_discharge_min": 0.37 }, { "time": "2026-10-17", "river_discharge": 0.4, "river_discharge_mean": 0.46, "river_discharge_median": 0.45, "river_discharge_max": 0.73, "river_discharge_min": 0.37 }, … ], "source": { "name": "Open-Meteo", "url": "https://open-meteo.com", "license": "CC BY 4.0", "upstream": "Copernicus Emergency Management Service — GloFAS" }, "notice": "5 km ızgaralı küresel hidrolojik model; küçük dereler temsil edilmeyebilir. Taşkın uyarıları için DSİ/AFAD duyuruları esastır." }
Güneş Enerjisi API

Tahmin: Open-Meteo ışınım tahmini + oktasoft üretim modeli. Yıllık verim: PVGIS © AB JRC.

GET /api/v1/solar/forecast GES üretim tahmini — saatlik kW, günlük kWh Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet*—Enlem / boylam (ondalık derece)
cityHayır—lat/lon yerine şehir adı
kwpHayır10Kurulu güç (kWp)
tiltHayır30Panel eğimi (°)
azimuthHayır00 güney, -90 doğu, 90 batı
daysHayır31–7
prHayır0.86Performans oranı (sıcaklık dışı kayıplar)

* Konum: lat ve lon birlikte ya da city.

Örnek yanıt · gerçek çıktı, Antalya, 10 kWp, 16.10.2026 · listeler kısaltıldı

{ "system": { "kwp": 10.0, "tilt": 30.0, "azimuth": 0.0, "performance_ratio": 0.86, "azimuth_note": "0 = güney, -90 = doğu, 90 = batı" }, "location": { "lat": 36.88849, "lon": 30.713486, "timezone": "Europe/Istanbul" }, "daily": [ { "date": "2026-10-16", "energy_kwh": 36.07, "peak_kw": 6.53, "irradiation_kwh_m2": 4.49, "specific_yield_kwh_kwp": 3.61 }, { "date": "2026-10-17", "energy_kwh": 24.94, "peak_kw": 4.85, "irradiation_kwh_m2": 2.99, "specific_yield_kwh_kwp": 2.49 } ], "hourly": [ { "time": "2026-10-16T08:00", "gti_w_m2": 36.1, "temp_c": 17.4, "cloud_cover_pct": 100, "power_kw": 0.318 }, { "time": "2026-10-16T09:00", "gti_w_m2": 170.6, "temp_c": 18.8, "cloud_cover_pct": 56, "power_kw": 1.472 }, … ], "source": { "name": "Open-Meteo", "url": "https://open-meteo.com", "license": "CC BY 4.0", "upstream": "Ulusal hava servisi modelleri" }, "method": "Eğimli düzlem ışınımı × kWp × PR × sıcaklık düzeltmesi (−%0,4/°C, NOCT 45 °C). Tahmindir; gerçek üretim gölgelenme, kirlenme ve ekipmana göre değişir." }
GET /api/v1/solar/yearly Uzun dönem yıllık/aylık GES verimi (fizibilite) Pro

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet*—Enlem / boylam (ondalık derece)
cityHayır—lat/lon yerine şehir adı
kwpHayır10Kurulu güç
tiltHayıren uygunBoşsa en uygun eğim hesaplanır
azimuthHayır0
lossHayır14Sistem kaybı (%)

* Konum: lat ve lon birlikte ya da city.

Örnek yanıt · gerçek çıktı, Antalya, 10 kWp, en uygun eğim, 16.10.2026 · listeler kısaltıldı

{ "system": { "kwp": 10.0, "tilt": 33, "tilt_optimal": true, "azimuth": -1, "system_loss_pct": 14.0 }, "yearly": { "energy_kwh": 16485.38, "irradiation_kwh_m2": 2170.2, "year_to_year_variation_kwh": 333.82, "specific_yield_kwh_kwp": 1648.5 }, "monthly": [ { "month": 1, "energy_kwh": 1001.71, "irradiation_kwh_m2": 121.16 }, { "month": 2, "energy_kwh": 1083.57, "irradiation_kwh_m2": 133.95 }, … ], "radiation_db": "PVGIS-SARAH3", "source": { "name": "PVGIS © Avrupa Birliği, Ortak Araştırma Merkezi (JRC)", "url": "https://re.jrc.ec.europa.eu/pvg_tools/", "license": "Kaynak gösterilerek yeniden kullanım (2011/833/AB)" }, "method": "PVGIS uzun dönem (çok yıllık uydu ışınım verisi) ortalaması." }
Takvim API

Sunucuda hesaplanır, dış kaynağa gitmez: 2429 sayılı Kanun'a göre resmî tatiller, NOAA güneş konumu algoritması.

GET /api/v1/calendar/holidays Türkiye resmî tatilleri + yarım günler Free+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
yearHayırbu yıl2000–2100

Örnek yanıt · gerçek çıktı, 2026, 16.10.2026 · listeler kısaltıldı

{ "year": 2026, "country": "TR", "count": 17, "holidays": [ { "date": "2026-01-01", "name": "Yılbaşı", "name_en": "New Year's Day", "type": "public", "weekday": 4 }, { "date": "2026-03-19", "name": "Ramazan Bayramı (saat 13.00'ten)", "name_en": null, "type": "half_day", "from": "13:00", "weekday": 4 }, … ], "source": { "name": "oktasoft hesaplaması — resmî tatiller 2429 sayılı Kanun", "license": "—" }, "notice": "Dini bayram tarihleri Diyanet takvimine göredir; Cumhurbaşkanlığınca ilan edilen idari izinler dahil değildir." }
GET /api/v1/calendar/workdays İki tarih arası iş günü sayısı Free+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
startEvet—YYYY-AA-GG
endEvet—YYYY-AA-GG (dahil)

Örnek yanıt · gerçek çıktı, 29 Ekim haftası, 16.10.2026 · listeler kısaltıldı

{ "start": "2026-10-26", "end": "2026-11-01", "calendar_days": 7, "workdays": 4, "half_days_included": 1, "weekday_holidays": 1, "note": "Cumartesi tatil sayılır; yarım günler (arife, 28 Ekim) iş günü olarak sayılır ve ayrıca belirtilir.", "source": { "name": "oktasoft hesaplaması — resmî tatiller 2429 sayılı Kanun", "license": "—" } }
GET /api/v1/calendar/sun Gün doğumu/batımı, alacakaranlık, gün uzunluğu Free+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet*—Enlem / boylam (ondalık derece)
cityHayır—lat/lon yerine şehir adı
dateHayırbugünYYYY-AA-GG
daysHayır11–31
utc_offsetHayır3Yerel saat farkı

* Konum: lat ve lon birlikte ya da city.

Örnek yanıt · gerçek çıktı, Ankara, 16.10.2026 · listeler kısaltıldı

{ "lat": 39.92, "lon": 32.85, "days": [ { "date": "2026-10-16", "lat": 39.92, "lon": 32.85, "utc_offset_hours": 3.0, "civil_dawn": { "utc": "2026-10-16T03:32:07Z", "local": "2026-10-16T06:32:07+0300" }, "sunrise": { "utc": "2026-10-16T03:59:22Z", "local": "2026-10-16T06:59:22+0300" }, "solar_noon": { "utc": "2026-10-16T09:34:04Z", "local": "2026-10-16T12:34:04+0300" }, "sunset": { "utc": "2026-10-16T15:08:46Z", "local": "2026-10-16T18:08:46+0300" }, "civil_dusk": { "utc": "2026-10-16T15:36:01Z", "local": "2026-10-16T18:36:01+0300" }, "day_length_minutes": 669 } ], "source": { "name": "oktasoft hesaplaması — NOAA güneş konumu algoritması", "license": "—" } }
Toprak Nemi ve Uydu API

Model ve uydu tabanlı toprak nemi; parsel için Sentinel-2 bitki indeksleri ve Sentinel-1 radar. Uydular üst ~5 cm toprağı görür; kök bölgesi için model katmanları ya da saha sensörü kullanılır. Kaynaklar: Open-Meteo, ERA5-Land, NASA POWER, NASA SMAP, Copernicus Sentinel.

GET /api/v1/agri/soil-moisture Toprak nemi zaman serisi (model, ERA5-Land, NASA, SMAP uydu) Starter+

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
lat / lonEvet*—Konum
cityHayır—lat/lon yerine şehir adı
daysHayır30Geriye dönük gün (1–92)
sourceHayırmodelmodel: 5 derinlik + 3 gün tahmin (m³/m³) · era5: ERA5-Land 3 derinlik · nasa: NASA POWER göreli ıslaklık (0–1) · smap: uydu (etkinse)

Örnek yanıt · gerçek çıktı, Antalya, 17.10.2026 · listeler kısaltıldı

{ "location": { "lat": 36.9, "lon": 30.7 }, "source_id": "model", "unit": "m³/m³", "latest": { "date": "2026-10-17", "forecast": false, "0_to_1cm": 0.32, "1_to_3cm": 0.321, "3_to_9cm": 0.325, "9_to_27cm": 0.326, "27_to_81cm": 0.262 }, "series": [ { "date": "2026-10-17", "forecast": false, "0_to_1cm": 0.32, "27_to_81cm": 0.262 }, { "date": "2026-10-18", "forecast": true, "0_to_1cm": 0.293, "27_to_81cm": 0.27 }, … ], "source": { "name": "Open-Meteo — sayısal hava modeli toprak nemi", "license": "CC BY 4.0" }, "available_sources": { "model": true, "era5": true, "nasa": true, "smap": false } }
GET /api/v1/agri/satellite Parsel: Sentinel-2 NDVI / NDMI, Sentinel-1 radar Pro

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
polygonEvet*—Parsel sınırı: 'boylam enlem;boylam enlem;…' (3–200 nokta, en çok 500 ha)
lat / lon + size_mEvet*200polygon yerine: merkez ve kare kenarı (20–2000 m)
daysHayır60Geriye dönük gün (7–365)
sourceHayırcopernicuscopernicus ya da gee (etkin olan)
sarHayırfalsetrue: Sentinel-1 radar (VV, dB) serisi de eklenir

* polygon ya da lat/lon. NDVI bitki gelişimini, NDMI bitki/yüzey su durumunu gösterir; bulut oranı %30'un altındaki gözlemler özet ve eğilimde kullanılmaz.

Örnek yanıt · gerçek çıktı, Antalya Aksu ovası, 8.94 ha tarım parseli, 17.10.2026 · listeler kısaltıldı

{ "parcel": { "area_ha": 8.94, "polygon": … }, "period": { "from": "2026-08-18", "to": "2026-10-17" }, "source_id": "copernicus", "latest": { "date": "2026-10-09", "ndvi": 0.499, "ndmi": 0.051, "clear_pct": 100.0 }, "trend": { "from": "2026-09-19", "to": "2026-10-09", "ndvi_change": -0.021, "ndmi_change": 0.017 }, "observations": [ { "date": "2026-09-29", "ndvi": 0.566, "ndmi": 0.112, "clear_pct": 7.6 }, { "date": "2026-10-07", "ndvi": 0.534, "ndmi": 0.057, "clear_pct": 100.0 }, { "date": "2026-10-09", "ndvi": 0.499, "ndmi": 0.051, "clear_pct": 100.0 }, … ], "radar": [ { "date": "2026-10-13", "vv_db": -8.75 }, { "date": "2026-10-14", "vv_db": -5.64 }, … ], "source": { "name": "Copernicus Sentinel verisi (Copernicus Data Space Ecosystem)", "license": "Ücretsiz, ticari kullanım serbest; 'Contains modified Copernicus Sentinel data' atfı" } }
GET /api/v1/agri/satellite/map Parselin renkli haritası (PNG): NDVI, NDMI, gerçek renk Pro

Query Parametreleri

ParametreZorunluVarsayılanAçıklama
polygonEvet*—Parsel sınırı: 'boylam enlem;boylam enlem;…' — sınır dışı saydam döner
lat / lon + size_mEvet*200polygon yerine: merkez ve kare kenarı (20–2000 m)
indexHayırndvindvi · ndmi · truecolor
dateHayır—YYYY-AA-GG; boşsa son 30 günün en yeni az bulutlu geçişi
widthHayır512Görüntü genişliği 64–1024 px (yükseklik parsele göre)

Yanıt

image/png (RGBA). Görüntü tarihi X-Image-Date başlığında. Bir piksel 10 m × 10 m'dir; bulut ve gölgeler yarı saydam gri gösterilir.

Renk ölçeği

NDVI -0.20.00.20.40.60.8

NDMI -0.4-0.20.00.10.250.5