Upload a flight via API (CSV log verified method)
Access & limitsPublic, no key needed · Upload & verify▾
Open to everyone. A free API key from your profile raises the limits: send it in an X-API-Key header, or as api_key= in the address.
| 5 minutes | Hour | Day | |
|---|---|---|---|
| Without a key | 60 | 600 | 5,000 |
| With a key | 1,000 | 10,000 | 50,000 |
Log in to create a free key on your profile page.
Every answer carries X-RateLimit-Remaining and X-RateLimit-Reset. Over a limit, the answer is error 429 with retry_after in seconds. Refused requests do not count.
Przegląd
To programowa wersja internetowego narzędzia przesyłania. Przyjmuje dziennik lotu, weryfikuje go dokładnie tak jak punkt końcowy Weryfikacja CSV, a jeśli dziennik jest autentyczny i jeszcze nie zapisany, dodaje lot do chmury, generuje miniatury wykresów i zwraca nowy lot.
Jeśli ten sam lot został już przesłany, nie jest dodawany ponownie. Zamiast tego zwracany jest istniejący lot z ustawioną flagą duplicate. Odpowiada to zachowaniu narzędzia internetowego, więc ponowne wysłanie dziennika jest zawsze bezpieczne.
Punkt końcowy
csv
Uwierzytelnianie
Brak. Przesłania są anonimowe, dokładnie jak w narzędziu internetowym. Bramką jest weryfikacja kryptograficzna: tylko autentyczne, niezmienione dzienniki z prawdziwego Nano mogą ją przejść, a duplikaty są ignorowane, więc otwarty punkt końcowy zapisuje wyłącznie prawdziwe dzienniki. Lot jest powiązany ze swoim urządzeniem, a właściciel urządzenia może go później przejąć, dodając to urządzenie do swojego konta Altimeter Cloud.
Żądanie
Wyślij dziennik lotu, niezmieniony, jako pole pliku multipart o nazwie csv (lub flightlog) albo jako tekstowy parametr POST csv.
curl -X POST https://www.altimetercloud.com/po/api/upload/ \
-F "csv=@flight_1234.csv"
Odpowiedź
API zwraca JSON. Gdy lot jest dodawany po raz pierwszy, duplicate ma wartość false, a miniatury zostały właśnie wygenerowane:
{
"success": true,
"verified": true,
"duplicate": false,
"verify_method": "Ed25519",
"flight": {
"id": 1234,
"url": "https://www.altimetercloud.com/po/flights/1234/",
"firmware": "1.52",
"hardware": "4",
"device_tag": "MY-NANO",
"competitor_tag": "C-07",
"apogee": 246.4,
"apogee_time": 5.21,
"max_velocity": 98.3,
"samples": 3210,
"flight_unique_id": "a1b2c3...",
"thumbnails": {
"meters_small": "https://www.altimetercloud.com/po/flightdata/4/1234.webp",
"meters_large": "https://www.altimetercloud.com/po/flightdata/4/1234_l.webp",
"feet_small": "https://www.altimetercloud.com/po/flightdata/4/1234_ft.webp",
"feet_large": "https://www.altimetercloud.com/po/flightdata/4/1234_l_ft.webp",
"miles_small": "https://www.altimetercloud.com/po/flightdata/4/1234_mi.webp",
"miles_large": "https://www.altimetercloud.com/po/flightdata/4/1234_l_mi.webp",
"km_small": "https://www.altimetercloud.com/po/flightdata/4/1234_km.webp",
"km_large": "https://www.altimetercloud.com/po/flightdata/4/1234_l_km.webp"
}
}
}
Gdy ten sam lot już istnieje, jest zwracany bez zmian, z duplicate równym true i bez ponownego generowania miniatur:
{
"success": true,
"verified": true,
"duplicate": true,
"verify_method": "Ed25519",
"flight": { "id": 1234, "url": "https://www.altimetercloud.com/po/flights/1234/", "...": "..." }
}
Jeśli dziennik nie przejdzie weryfikacji, nie jest zapisywany:
{
"success": false,
"verified": false,
"error": { "code": "400", "message": "Flight log failed verification" }
}
Obsługa duplikatów
Lot jest uznawany za już zapisany, gdy jego urządzenie i hash podpisu odpowiadają już przesłanemu lotowi. W takim przypadku nic nie jest dodawane ponownie i żadne wykresy nie są przebudowywane; otrzymujesz po prostu identyfikator istniejącego lotu z duplicate równym true.
Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
success | boolean | Prawda, jeśli dziennik został przyjęty (nowo zapisany lub już obecny) |
verified | boolean | Czy dziennik przeszedł weryfikację kryptograficzną |
duplicate | boolean | Prawda, jeśli lot już istniał i nie został dodany ponownie |
verify_method | string | Użyta metoda: Ed25519, HMAC-SHA256 lub SHA-256 |
flight.id | integer | Identyfikator lotu w chmurze (nowy lub istniejący) |
flight.flight_unique_id | string | Hash podpisu, używany z punktem końcowym Informacje o locie |
flight.thumbnails | object | Adresy URL obrazów wykresów we wszystkich rozmiarach |
error.code / error.message | string | Kod błędu i opis (w razie niepowodzenia) |
Błędy
| Kod | Znaczenie |
|---|---|
400 (weryfikacja) | Dziennik nie przeszedł weryfikacji kryptograficznej i nie został zapisany |
400 (ciśnienie) | Dziennik nie przeszedł dodatkowej kontroli krzyżowej ciśnienia i nie został zapisany |
412 | W żądaniu nie podano żadnego dziennika lotu |
Przejmowanie lotu
Ponieważ przesłania są anonimowe, lot jest powiązany tylko z urządzeniem, które go zarejestrowało. Aby przejąć loty z danego urządzenia, dodaj to urządzenie do swojego konta Altimeter Cloud; jego loty, w tym przesłane przez to API, zostaną wtedy przejęte automatycznie.
Uwagi
Weryfikacja jest tutaj identyczna jak w punkcie końcowym weryfikacji CSV, więc każdy dziennik, który tam przejdzie weryfikację, można przesłać tutaj. Jedyna różnica polega na tym, że ten punkt końcowy dodatkowo zapisuje lot i buduje jego wykresy. Aby sprawdzić dziennik bez zapisywania, użyj zamiast tego punktu końcowego Weryfikacja CSV. Na tej stronie nie ma interaktywnego środowiska testowego, ponieważ każde udane wywołanie tworzy prawdziwy zapisany lot.
Crediting AltimeterCloud
Free to use. If you use this API, or anything made from the answers, in a commercial product or service, credit AltimeterCloud with a link to www.altimetercloud.com at the point of use: on the screen, page or printout where the data appears, for example “Data from AltimeterCloud.com”. Any credits the data's own sources ask for, listed on this page, apply as well.



















