API Cuaca
Prakiraan global sampai 15 hari dari ECMWF dan model nasional beresolusi tinggi, dikoreksi terhadap ketinggian tanah Anda yang sebenarnya. Satu scope — meteo — mencakup seluruh halaman ini.
Prakiraan#
meteo1 kreditPrakiraan per jam dan harian untuk koordinat mana pun.
Parameter
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
lat | float | — | Lintang, −90 sampai 90. Wajib. |
lon | float | — | Bujur, −180 sampai 180. Wajib. |
days | int | 7 | 1–16 diterima, tetapi horizon yang dilayani adalah 15 hari, jadi 16 mengembalikan 15. Hari ke-11–15 adalah tren, bukan prakiraan — lihat di bawah. |
elevation | float (m) | — | Ketinggian tanah sebenarnya dari titik Anda. Berikan nilainya dan suhu akan dikoreksi terhadap selisih dengan medan model yang dihaluskan. Di daerah berbukit biasanya bernilai 1–3 °C. |
timezone | IANA zone | UTC | Zona tempat agregat harian dipotong, dan offset yang dibawa kembali oleh setiap stempel waktu. |
hourly | csv | all | Sebagian field per jam, untuk memperkecil muatan. Namanya sesuai referensi field. |
include_daily | bool | true | Sertakan blok harian. |
Respons
{
"latitude": 48.85,
"longitude": 2.35,
"timezone": "Europe/Paris",
"grid": {
"latitude": 48.85, "longitude": 2.35,
"distance_km": 0.42, "resolution_km": 1.3
},
"elevation": {
"applied": true,
"model_elevation_m": 91.0,
"location_elevation_m": 113,
"temperature_offset_c": -0.14
},
"source": {
"model": "mf_arome",
"model_run": "20260801T00Z",
"reference_time": "2026-08-01T00:00:00+00:00",
"data_age_hours": 3.95,
"stale": false,
"attribution": "Data: Météo-France (etalab-2.0)"
},
"hourly": {
"time": ["2026-08-01T00:00:00+02:00", "..."],
"temperature_2m": [18.1, 17.9, 17.6, "..."],
"apparent_temperature": [17.4, "..."],
"weather_code": [0, 1, 2, "..."]
},
"daily": {
"date": ["2026-08-01", "..."],
"temperature_2m_max": [26.6, "..."],
"temperature_2m_min": [16.2, "..."],
"precipitation_sum": [0.0, "..."],
"uv_index_max": [7.6, "..."],
"sunrise": ["2026-08-01T06:24:00+02:00", "..."],
"sunset": ["2026-08-01T21:24:00+02:00", "..."],
"daylight_hours": [15.0, "..."]
}
}
Blok grid layak dibaca.
distance_km memberi tahu seberapa jauh pusat sel model dari titik
yang Anda minta, dan resolution_km seberapa kasar sel itu.
Bersama-sama keduanya memberi tahu seberapa harfiah angka-angka itu boleh
dibaca: 0,4 km dari sel 1,3 km berarti jalan Anda; 12 km dari sel 28 km
berarti wilayah Anda.
Blok elevation menyebut apa yang dilakukan, bukan apa
yang diminta. applied: false berarti tidak ada koreksi
yang terjadi — entah Anda tidak mengirim elevation, entah medan
model memang sudah cocok. Jangan pernah menganggap koreksi berjalan hanya karena
Anda memintanya.
Memperkecil muatan
Blok per jam yang lengkap untuk 15 hari kira-kira 32 field × 360 jam. Jika Anda hanya menggambar tiga di antaranya, mintalah tiga:
GET /v1/forecast?lat=48.85&lon=2.35&days=3
&hourly=temperature_2m,precipitation,weather_code
&include_daily=false
Harganya sama — biayanya ada pada pembacaan arsip, bukan penyerialan — tetapi byte-nya sepersepuluh dan terasa lebih cepat diurai di ponsel.
Prakiraan per kota#
meteo1 kreditRespons yang sama, diselesaikan lewat katalog kota.
Pilih ini ketimbang koordinat mentah bila memungkinkan. Katalog menyediakan dua hal yang tidak bisa diberikan koordinat: ketinggian sebenarnya kota itu, sehingga koreksi medan berjalan tanpa Anda memasoknya, dan zona waktunya, sehingga agregat harian dipotong pada hari lokal yang benar.
GET /v1/forecast/city/dz/alger # slug Prancis
GET /v1/forecast/city/dz/algiers # slug Inggris — kota yang sama
GET /v1/forecast/city/fr/paris
country adalah kode ISO-3166-1 alpha-2 dalam huruf kecil.
slug mengabaikan tanda diakritik: bejaia menemukan
Béjaïa. Slug yang tidak dikenal mengembalikan 404 city_not_found
beserta larik suggestions — tampilkan itu alih-alih jalan
buntu.
Semua parameter kueri /v1/forecast tetap berlaku
kecuali lat, lon, dan elevation, yang
disediakan katalog. Mengirim timezone menimpa zona milik kota itu,
yang hampir tidak pernah Anda inginkan.
Jangan menanam slug hasil tebakan di kode. Selesaikan namanya sekali lewat /v1/geocode, simpan negara dan slug yang dikembalikannya, lalu pakai itu. Geocoding tidak memakan kredit, jadi melakukannya dengan benar itu gratis.
Kondisi terkini#
meteo1 kreditKondisi saat ini untuk sebuah koordinat, diinterpolasi antara langkah model.
meteo1 kreditHal yang sama, lewat katalog kota.
Suhu, kelembapan, angin, dan tekanan diinterpolasi linear ke saat ini, di antara dua langkah model yang mengapitnya.
Curah hujan tidak diinterpolasi, dan itu disengaja. Nilai curah hujan per jam adalah total selama satu interval, bukan pembacaan pada satu saat. Menginterpolasinya berarti mengarang hujan pada menit yang oleh model ditempatkan di jam lain. Sebagai gantinya Anda mendapat nilai langkah yang memuatnya — angka nyata tentang interval nyata.
Gunakan ini untuk tampilan "saat ini". Untuk apa pun yang akan Anda bandingkan lintas waktu, pakai /v1/forecast lalu baca jam yang Anda inginkan: deretnya stabil, sedangkan sekarang bergeser di bawah Anda di antara dua panggilan.
Referensi field#
Tabel yang sama dalam JSON, dengan satuan dan penanda field bawaan. Tanpa kunci.
Field per jam
21 di antaranya kembali secara bawaan. Sisanya milik Anda jika diminta —
sebutkan di hourly=, dipisah koma — dan ditahan karena biaya, bukan
karena ragu: setiap field tersimpan adalah pembacaan terkompresi tersendiri,
jadi respons bawaan yang membawa seluruh 45 field akan membuat semua orang
membayar demi segelintir yang menginginkan ketebalan salju.
GET /v1/forecast?lat=45.19&lon=5.72&hourly=temperature_2m,snow_line_altitude,soil_temperature_8cm
Field yang tidak diterbitkan sebuah model kembali sebagai null
pada bagian prakiraan milik model itu, alih-alih lenyap dari respons — sehingga
rantai yang dimulai di AROME dan berlanjut di ICON-EU tetap mengembalikan
visibility sepanjang deret, kosong pada 51 jam pertama. Nama field
yang tidak dikenal menghasilkan 400 unknown_field,
dengan saran kecocokan terdekat; dulu ia diabaikan diam-diam.
| Field | Satuan | Catatan |
|---|---|---|
temperature_2m | °C | Dikoreksi medan bila ketinggian diketahui |
apparent_temperature | °C | Rumusan Steadman; berlaku di seluruh rentang |
relative_humidity_2m | % | |
dewpoint_2m | °C | |
precipitation | mm | Total selama langkah, sudah didekumulasi |
precipitation_probability_proxy | % | Heuristik, bukan probabilitas ensemble. Lihat di bawah. |
weather_code | WMO | Kode ikon, diambangkan pada mm/jam, bukan pada total langkah |
cloud_cover | % | |
wind_speed_10m | m/s | |
wind_direction_10m | ° | Arah dari mana angin bertiup |
wind_gust_10m | m/s | Maksimum selama langkah |
pressure_msl | hPa | Direduksi ke permukaan laut |
surface_pressure | hPa | Pada ketinggian lokasi |
shortwave_radiation | W/m² | Rata-rata selama langkah |
uv_index | 0–11+ | Perkiraan. Lihat di bawah. |
cape | J/kg | Potensi badai petir |
is_day | 0/1 | |
visibility | m | Hanya ICON-EU dan ICON-D2 |
cloud_cover_low | % | Hanya model ICON |
cloud_cover_mid | % | Hanya model ICON |
cloud_cover_high | % | Hanya model ICON |
precipitation_type | WMO | Hanya ECMWF Minta di hourly= |
snow_depth | m | Yang menumpuk, bukan yang turun. Hanya ICON Minta di hourly= |
snow_water_equivalent | mm | Air yang dihasilkan tumpukan salju saat meleleh. Hanya ICON Minta di hourly= |
snow_line_altitude | m | Lihat salju. ICON-EU dan ICON-D2 Minta di hourly= |
freezing_level_altitude | m | Isoterm 0 °C. Hanya ICON Minta di hourly= |
soil_temperature_0cm | °C | Permukaan. Hanya ICON global dan ICON-EU Minta di hourly= |
soil_temperature_8cm | °C | Zona akar, lapisan 7–28 cm. Hanya ICON global dan ICON-EU Minta di hourly= |
shortwave_radiation_direct | W/m² | Komponen langsung. Hanya ICON Minta di hourly= |
shortwave_radiation_diffuse | W/m² | Komponen baur. Hanya ICON Minta di hourly= |
solar_elevation | ° | Dihitung dari stempel waktu dan koordinat Minta di hourly= |
solar_azimuth | ° | Dihitung dari stempel waktu dan koordinat Minta di hourly= |
temperature_2m_max | °C | Selama langkah, bila model menerbitkannya Minta di hourly= |
temperature_2m_min | °C | Selama langkah, bila model menerbitkannya Minta di hourly= |
skin_temperature | °C | Permukaan tanah, bukan udara Minta di hourly= |
heat_index | °C | NWS Amerika Serikat. Di bawah 27 °C mengembalikan suhu biasa Minta di hourly= |
wind_chill | °C | Environment Canada. Di atas 10 °C mengembalikan suhu biasa Minta di hourly= |
wind_speed_100m | m/s | Untuk penerapan energi angin Minta di hourly= |
wind_direction_100m | ° | Minta di hourly= |
wind_beaufort | 0–12 | Minta di hourly= |
cloud_cover_octas | 0–8 | Minta di hourly= |
snowfall | mm | Setara air, bukan ketebalan salju segar Minta di hourly= |
total_column_water_vapour | kg/m² | Minta di hourly= |
pressure_tendency | hPa | Minta di hourly= |
weather_description | teks | Minta di hourly= |
Field harian
date, temperature_2m_max,
temperature_2m_min, temperature_2m_mean,
precipitation_sum, wind_speed_max,
wind_gust_max, shortwave_radiation_sum (MJ/m²),
uv_index_max, sunrise, sunset,
daylight_hours, weather_code.
Diagregasi pada hari kalender lokal, bukan UTC. Hari yang tidak utuh di salah satu ujung rentang dihilangkan alih-alih dilaporkan dengan maksimum yang menyesatkan — jadi permintaan 7 hari sah saja mengembalikan 6 baris harian.
Dua field adalah perkiraan, dan kami lebih suka mengatakannya daripada membiarkan Anda menemukannya sendiri.
uv_index diturunkan dari elevasi matahari dan radiasi pita
lebar, bukan dari kolom ozon. Akurat kira-kira ±1 satuan — cukup untuk "pakai
topi", tidak cukup untuk klaim medis.
precipitation_probability_proxy adalah perkiraan, bukan
probabilitas. Model deterministik tidak punya sebaran untuk menurunkannya.
Namanya diberi akhiran _proxy agar tak seorang pun mengiranya
produk ensemble yang dilayani
/v1/probability, yang merupakan
frekuensi sungguhan atas 51 anggota.
Ia menggabungkan dua suku. Suku pertama menanyakan apakah hujan di sel itu mencapai titik Anda: laju yang tersimpan adalah rata-rata seluruh sel grid, jadi pada 28 km — 780 km² — rata-rata yang kecil bisa jadi hujan nyata di sebagian kecil sel itu. Dengan menganggap sebaran laju di dalam sel sebagai Weibull, yang bentuknya ditentukan ukuran sel dan rata-rata model itu sendiri, peluang sebuah titik di dalam sel melampaui 0,1 mm/jam bisa diperoleh dalam bentuk tertutup. Suku kedua membatasi klaim langit mendung yang nyaris jenuh di tempat yang oleh model sama sekali tidak diberi hujan. Keduanya lalu diskalakan menurut seberapa layak sebuah run dipercaya pada tenggat itu, sebab itulah curah hujan yang sama terbaca lebih rendah pada hari ke-9 daripada hari ke-1.
Akibatnya tempat yang sama bisa terbaca berbeda dari dua model, dan memang seharusnya begitu: sel 2,2 km dan sel 28 km benar-benar berbeda pendapat tentang arti sebuah rata-rata kecil. Aplikasi konsumen yang menyebut satu angka menyembunyikan hal ini.
Model dan resolusi#
Model mana yang aktif, apa yang dicakup masing-masing, dan seberapa segar. Tanpa kunci.
Kami melayani model terhalus yang mencakup titik Anda dan tenggat
Anda. Anda tidak pernah memilihnya; pilihannya dilaporkan di
source.model sehingga Anda selalu tahu mana yang menjawab.
Model beresolusi tinggi semuanya berjangkau pendek — pada 1 km atmosfer menjadi kacau dalam dua hari, sehingga memprakirakan lebih jauh tidak bermakna — karena itu resolusinya menurun bertahap seiring majunya prakiraan:
hari 0 ────── hari 2 ────── hari 5 ─────────────── hari 15
AROME 1,3 km (Prancis)
ICON-D2 2,2 km (Jerman, Alpen, Benelux)
HRRR 3 km (AS dan Kanada selatan)
ICON-EU 6,5 km (Eropa)
ICON 13 km · ECMWF 28 km (global)
AIFS (hanya tren)
source.model | Model | Resolusi | Run | Horizon |
|---|---|---|---|---|
mf_arome | Météo-France AROME | 1.3 km | 8/hari | 51 jam |
dwd_icon_d2 | DWD ICON-D2 | 2.2 km | 4/hari | 48 jam |
noaa_hrrr | NOAA HRRR | 3 km | 4/hari | 48 jam |
dwd_icon_eu | DWD ICON-EU | 6.5 km | 2/hari | 120 jam |
dwd_icon | DWD ICON | 13 km | 2/hari | 180 jam |
ecmwf_ifs | ECMWF IFS | 28 km | 2/hari | 240 jam |
ecmwf_aifs | ECMWF AIFS | 28 km | 2/hari | 360 jam |
ecmwf_wave | ECMWF wave | 28 km | 2/hari | 240 jam |
Peralihan di tepi domain sebuah model disilangsamarkan, sehingga dua kota di kedua sisi batas tidak pernah berbeda secara melompat.
Hari ke-11–15 adalah tren, bukan prakiraan. Pada jangkauan itu keterampilan model mendekati klimatologi. Kami menerbitkannya karena diminta; perlakukan sebagai arah kecenderungan, dan jika Anda menampilkannya, katakanlah.
/v1/models tidak butuh kunci, sehingga cocok untuk dipanggil
dari halaman status atau diperiksa sebelum Anda membeli: ia melaporkan run
terbaru setiap model beserta usianya, jadi "apakah datanya segar" bisa dijawab
tanpa menghabiskan satu kredit pun.
Probabilitas ensemble#
meteo1 kreditPersentil dan peluang hujan dari ensemble ECMWF beranggota 51.
Satu prakiraan tunggal berkata 22 °C pada hari Kamis. Itu tebakan yang disajikan sebagai fakta. Endpoint ini menjawab pertanyaan yang sebenarnya Anda pakai untuk memutuskan: seberapa yakin, dan berapa peluang hujan yang layak diperhitungkan.
Ia dihitung dari ensemble ECMWF — model yang sama dijalankan 50 kali dari kondisi awal yang sedikit berbeda. Di tempat run-run itu sepakat, prakiraannya yakin. Di tempat mereka menyebar, atmosfernya sendirilah yang tidak pasti, dan tidak ada model, sebaik apa pun, yang bisa memberi tahu lebih banyak.
{
"members": 50,
"hourly": {
"time": ["2026-08-01T00:00:00+00:00"],
"temperature_2m_p10": [26.4],
"temperature_2m_p50": [26.78],
"temperature_2m_p90": [27.3],
"temperature_2m_spread": [0.4],
"precipitation_probability_0_1mm": [10.0],
"precipitation_probability_1_0mm": [0.0],
"precipitation_probability_5_0mm": [0.0],
"precipitation_probability_10_0mm": [0.0],
"precipitation_p90": [0.1]
}
}
Cara membacanya
p10 dan p90 mengapit 80 % anggota di tengah: satu
dari sepuluh memperkirakan lebih dingin daripada p10, satu dari
sepuluh lebih hangat daripada p90. spread sebesar
0,4 °C berarti situasi mapan yang bisa Anda percaya; 3 °C berarti model-model
berbeda pendapat dan Anda sebaiknya mengatakan itu kepada pengguna alih-alih
memilih salah satu.
Ambang hujan adalah keputusan, bukan angka bulat — 0,1 mm berarti basah
sama sekali, 1 mm berarti bawa jaket, 5 dan 10 mm berarti ini
masalah. precipitation_p90 adalah kasus buruknya: hanya satu
anggota dari sepuluh yang lebih basah.
Hanya dua variabel, suhu dan curah hujan. Menambah awan, angin, dan tekanan akan melipatgandakan lebar pita seluruh platform demi angka yang tidak dipakai siapa pun untuk memutuskan apa pun.
Kualitas udara#
meteo1 kreditPartikulat, ozon, NO₂, SO₂, CO, dan debu Sahara, dari Copernicus CAMS.
Inilah endpoint yang paling penting di Afrika Utara dan kawasan Mediterania. Satu episode debu mendorong PM10 melewati seribu mikrogram per meter kubik selama berhari-hari, yang merupakan keputusan kesehatan alih-alih sekadar angka, dan cakupannya buruk pada layanan konsumen gratis.
{
"current": {
"pm2_5": 38.7,
"band": "poor",
"who_guidelines_ug_m3": {"pm2_5": 15.0, "pm10": 45.0,
"nitrogen_dioxide": 25.0, "ozone": 100.0}
},
"hourly": {
"time": ["2026-08-01T00:00:00+00:00"],
"pm2_5": [38.7], "pm10": [85.8], "ozone": [43.4],
"nitrogen_dioxide": [19.0], "dust_aod_550nm": [0.24]
},
"units": {"pm2_5": "ug/m3", "pm10": "ug/m3", "dust_aod_550nm": "1"}
}
Semua konsentrasi dinyatakan dalam µg/m³, satuan yang
dipakai di mana-mana untuk kualitas udara. dust_aod_550nm adalah
kedalaman optis dan tidak bersatuan: di atas sekitar 0,5 langit tampak berkabut,
di atas 1,0 matahari meredup.
Nilai panduan jangka pendek WHO ikut serta di setiap respons agar sebuah
angka bisa ditempatkan tanpa perlu dicari. band mengikuti indeks
kualitas udara Eropa untuk PM2,5: baik, cukup, sedang, buruk, sangat buruk,
amat sangat buruk.
Salju dan batas salju#
Empat field, dan masing-masing menjawab pertanyaan berbeda.
snowfall adalah berapa banyak yang turun; sisanya menggambarkan apa
yang menumpuk di tanah dan di mana.
Mintalah dengan menyebut namanya — semuanya tidak ada di respons bawaan:
GET /v1/forecast?lat=45.19&lon=5.72&hourly=snowfall,snow_depth,snow_water_equivalent,snow_line_altitude,freezing_level_altitude
| Field | Satuan | Apa yang diberitahukan |
|---|---|---|
snow_depth | m | Yang menumpuk. Dua puluh sentimeter bisa turun lalu meleleh, atau mendarat di atas delapan puluh yang sudah ada. |
snow_water_equivalent | mm | Air yang dihasilkan saat meleleh. Setengah meter salju gembur dan setengah meter salju padat sangat berbeda. |
snow_line_altitude | m | Ketinggian di atasnya presipitasi turun sebagai salju. |
freezing_level_altitude | m | Tinggi isoterm 0 °C, biasanya beberapa ratus meter di atas batas salju. |
Batas saljulah yang layak dibaca. "Di 800 m hujan dan di 1200 m salju" adalah keputusan yang bisa ditindaklanjuti resor ski, otoritas jalan, atau pengemudi; "3 mm presipitasi" bukan. Ini juga penting di Afrika Utara — Pegunungan Atlas punya area ski di Chréa dan Tikjda, dan dataran tinggi di Sétif, Batna, serta Djelfa berada di atas 1000 m.
Gletser melaporkan ketebalan salju berpuluh meter, karena begitulah model merepresentasikan es abadi, bukan karena kesalahan pengukuran. Salju musiman terdalam di bumi sekitar 11 m — anggap apa pun yang melebihi itu sebagai es, bukan cuaca.
Data ini berasal dari ICON milik DWD, yang mencakup dunia pada 13 km. Data
terbuka ECMWF menerbitkan ketebalan salju tetapi tidak batas salju, jadi ini
salah satu tempat model yang lebih kasar justru lebih berguna.
snow_line_altitude adalah produk regional: ICON-EU dan ICON-D2
menerbitkannya, ICON global tidak, sehingga di luar Eropa Anda mendapat
ketinggian titik beku dan ketebalannya, tetapi bukan batasnya.
Laut — kondisi laut#
meteo1 kreditTinggi, arah, dan periode gelombang dari model gelombang ECMWF, di seluruh dunia, sampai 10 hari.
{
"hourly": {
"time": ["2026-08-01T00:00:00+00:00"],
"wave_height": [0.32],
"wave_direction": [264.3],
"wave_period": [3.79],
"wave_peak_period": [4.21]
}
}
Tinggi gelombang adalah tinggi signifikan — rata-rata sepertiga gelombang tertinggi, kira-kira sama dengan yang dilaporkan pengamat di laut. Gelombang tunggal bisa mencapai sekitar dua kali lipatnya, dan angka itulah yang penting bila Anda memutuskan melaut atau tidak. Arahnya adalah arah dari mana gelombang datang, seperti arah angin.
Titik di daratan mengembalikan 404 not_at_sea, bukan daftar
nilai kosong. Model gelombang memang tidak bernilai di atas daratan, dan
mengatakannya lebih berguna daripada respons yang terbaca seperti kegagalan
layanan. Jika Anda membiarkan pengguna menjatuhkan pin, tangani kode ini secara
eksplisit.
Sungai#
meteo1 kreditDebit sungai dari Copernicus GloFAS pada jaringan sungai 0,05°, sampai 10 hari.
Ia menjawab apa yang tidak bisa dijawab model cuaca mana pun: bukan berapa banyak hujan yang turun di hulu, melainkan berapa banyak air yang tiba di sini — angka yang berbeda, dipisahkan dari hujan oleh sebuah daerah aliran, oleh kondisi kelembapan tanah, dan oleh satu-dua hari waktu tempuh.
{
"disclaimer": "Information only. Only national and regional authorities
are authorised to issue flood warnings.",
"daily": {
"time": ["2026-08-01T00:00:00+00:00"],
"river_discharge": [4.953],
"soil_wetness_index": [0.448]
}
}
| Field | Artinya |
|---|---|
river_discharge | Debit rata-rata dalam m³/s selama 24 jam yang berakhir pada saat itu. Nol berarti model tidak punya sungai di sel tersebut, bukan berarti ada sungai yang mengering. |
soil_wetness_index | Kejenuhan daerah aliran, 0 kering sampai 1 jenuh. Nilai tinggi berarti hujan berikutnya mengalir di permukaan alih-alih meresap. |
Ini bukan peringatan banjir dan tidak boleh disajikan sebagai peringatan banjir. Lisensi Copernicus menyerahkan peringatan banjir kepada otoritas nasional dan regional di wilayah tanggung jawab masing-masing, dan itu memang pengaturan yang benar — pihak yang berwenang memperingatkan juga pihak yang bisa menutup jalan dan mengevakuasi sebuah desa.
Debit dalam m³/s, boleh. Peringatan, warna tingkat bahaya, atau instruksi bertindak, tidak, bagaimanapun rupa angkanya hari itu. Penafiannya ikut serta di badan setiap respons, bukan hanya di sini, dan ada di sana agar sampai ke pengguna Anda sekalipun halaman ini tidak sampai.