CSV Flight log verification API
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
Dzienniki lotu CSV tworzone przez nasze wysokościomierze zawierają kryptograficzny podpis weryfikacyjny. To API sprawdza, czy dziennik lotu jest autentyczny i dokładnie taki, jak zapisał go wysokościomierz, czy też został zmodyfikowany.
Podpis jest generowany wewnątrz wysokościomierza przez oprogramowanie szyfrowane AES-256, co czyni jego sfałszowanie obliczeniowo niewykonalnym. Oprogramowanie 1.52 i nowsze podpisuje dziennik podpisem Ed25519; starsze oprogramowanie używa skrótu opartego na SHA-256. W obu przypadkach zarówno dane lotu, jak i ustawienia nagłówka muszą pozostać niezmienione, aby przejść weryfikację.
Obecnie obsługiwany jest wysokościomierz Nano, a obsługa wszystkich urządzeń pojawi się wkrótce. Dzienniki możesz też zweryfikować za pomocą narzędzia przesyłania.
Punkt końcowy
csv
Wyślij metodą POST cały dziennik lotu CSV, niezmieniony, do powyższego punktu końcowego. Treść CSV należy wysłać pod parametrem csv.
Odpowiedź
API zwraca JSON. W przypadku powodzenia otrzymasz użytą metodę weryfikacji oraz odczytane szczegóły lotu:
{
"success": true,
"log_lines": 825,
"input_bytes": 4187,
"verify_method": "SHA-256",
"firmware": "1.43b",
"hardware": "2",
"device_tag": "MyNano",
"competitor_tag": "",
"apogee": 2.54,
"apogee_time": 826,
"max_velocity": 5.910,
"landing_m": 0.784,
"landing_t": 2.253,
"flight_unique_id": "e1eb3e800d780a0b69670f03a88e2f45c592b6e79065fc08cf83241530a60c5a"
}
Jeśli dziennik lotu nie przejdzie weryfikacji lub żądanie jest puste:
{
"success": false,
"log_lines": 825,
"error": {
"code": "400",
"message": "Flight log failed verification (STEP=SHA256)"
}
}
{
"success": false,
"error": {
"code": "412",
"message": "No flight log supplied as a POST using the parameter csv="
}
}
Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
success | boolean | Czy dziennik lotu przeszedł weryfikację |
verify_method | string | Metoda, która zweryfikowała dziennik: Ed25519 (oprogramowanie 1.52+), HMAC-SHA256 (1.50 do 1.51) lub SHA-256 (starsze) |
log_lines | integer | Liczba wierszy danych w dzienniku lotu |
input_bytes | integer | Rozmiar przesłanego dziennika w bajtach |
firmware | string | Wersja oprogramowania z nagłówka dziennika |
hardware | string | Wersja sprzętu z nagłówka dziennika |
device_tag | string | Etykieta urządzenia z dziennika |
competitor_tag | string | Etykieta zawodnika, jeśli obecna (oprogramowanie 1.51+) |
apogee | float | Maksymalna wysokość w metrach |
apogee_time | integer | Czas apogeum w milisekundach |
max_velocity | float | Maksymalna prędkość wznoszenia w metrach na sekundę |
landing_m | float | Wysokość lądowania w metrach |
landing_t | float | Czas lądowania w sekundach |
flight_unique_id | string | Hash podpisu dziennika. Przekaż go do punktu końcowego Informacje o locie jako hash. Ma 128 znaków szesnastkowych dla oprogramowania 1.52+ (Ed25519) lub 64 dla starszych dzienników |
error.code | string | Kod błędu w stylu HTTP (w razie niepowodzenia) |
error.message | string | Czytelny opis błędu (w razie niepowodzenia) |
Środowisko testowe API
Przetestuj API na żywo. Poniżej wczytaliśmy przykładowy dziennik lotu Nano V1. Kliknij Uruchom, aby go zweryfikować, lub zmień dane, aby przetestować nieudaną weryfikację.
csvCrediting 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.



















