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.
Resumen
Esta es la versión programática de la herramienta web de carga. Toma un registro de vuelo, lo verifica exactamente como el punto final de Verificación CSV y, si el registro es auténtico y aún no está almacenado, añade el vuelo a la nube, genera las miniaturas de los gráficos y devuelve el nuevo vuelo.
Si el mismo vuelo ya se ha subido, no se añade de nuevo. En su lugar se devuelve el vuelo existente, con el indicador duplicate activado. Esto coincide con el comportamiento de la herramienta web, por lo que reenviar un registro siempre es seguro.
Punto final
csv
Autenticación
Ninguna. Las cargas son anónimas, igual que en la herramienta web. La verificación criptográfica es el filtro: solo los registros auténticos y sin editar de un Nano real pueden pasar, y los duplicados se ignoran, de modo que un punto final abierto solo almacena registros legítimos. Un vuelo se asocia a su dispositivo, y el propietario del dispositivo puede reclamarlo más tarde añadiendo ese dispositivo a su cuenta de Altimeter Cloud.
Solicitud
Envíe el registro de vuelo, sin editar, como campo de archivo multipart llamado csv (o flightlog), o como parámetro POST de texto plano csv.
curl -X POST https://www.altimetercloud.com/es/api/upload/ \
-F "csv=@flight_1234.csv"
Respuesta
La API devuelve JSON. Cuando el vuelo se añade por primera vez, duplicate es false y las miniaturas se acaban de generar:
{
"success": true,
"verified": true,
"duplicate": false,
"verify_method": "Ed25519",
"flight": {
"id": 1234,
"url": "https://www.altimetercloud.com/es/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/es/flightdata/4/1234.webp",
"meters_large": "https://www.altimetercloud.com/es/flightdata/4/1234_l.webp",
"feet_small": "https://www.altimetercloud.com/es/flightdata/4/1234_ft.webp",
"feet_large": "https://www.altimetercloud.com/es/flightdata/4/1234_l_ft.webp",
"miles_small": "https://www.altimetercloud.com/es/flightdata/4/1234_mi.webp",
"miles_large": "https://www.altimetercloud.com/es/flightdata/4/1234_l_mi.webp",
"km_small": "https://www.altimetercloud.com/es/flightdata/4/1234_km.webp",
"km_large": "https://www.altimetercloud.com/es/flightdata/4/1234_l_km.webp"
}
}
}
Cuando el mismo vuelo ya existe, se devuelve sin cambios, con duplicate a true y sin regenerar las miniaturas:
{
"success": true,
"verified": true,
"duplicate": true,
"verify_method": "Ed25519",
"flight": { "id": 1234, "url": "https://www.altimetercloud.com/es/flights/1234/", "...": "..." }
}
Si el registro no supera la verificación, no se almacena:
{
"success": false,
"verified": false,
"error": { "code": "400", "message": "Flight log failed verification" }
}
Gestión de duplicados
Un vuelo se considera ya almacenado cuando su dispositivo y su hash de firma coinciden con un vuelo ya subido. En ese caso no se añade nada y no se reconstruye ningún gráfico; simplemente recibe el id del vuelo existente con duplicate a true.
Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
success | boolean | Verdadero si el registro fue aceptado (recién almacenado o ya presente) |
verified | boolean | Si el registro superó la verificación criptográfica |
duplicate | boolean | Verdadero si el vuelo ya existía y no se volvió a añadir |
verify_method | string | Método usado: Ed25519, HMAC-SHA256 o SHA-256 |
flight.id | integer | El id del vuelo en la nube (nuevo o existente) |
flight.flight_unique_id | string | El hash de firma, utilizable con el punto final Información de vuelo |
flight.thumbnails | object | URLs de las imágenes de gráfico en todos los tamaños |
error.code / error.message | string | Código de error y descripción (en caso de fallo) |
Errores
| Código | Significado |
|---|---|
400 (verificación) | El registro no superó la verificación criptográfica y no se almacenó |
400 (presión) | El registro no superó la comprobación cruzada de presión y no se almacenó |
412 | No se proporcionó ningún registro de vuelo en la solicitud |
Reclamar un vuelo
Como las cargas son anónimas, un vuelo solo está vinculado al dispositivo que lo registró. Para tomar posesión de los vuelos de un dispositivo, añada ese dispositivo a su cuenta de Altimeter Cloud; sus vuelos, incluidos los subidos mediante esta API, se reclaman entonces automáticamente.
Notas
La verificación aquí es idéntica a la del punto final de verificación CSV, por lo que cualquier registro que se verifique allí podrá subirse aquí. La única diferencia es que este punto final además almacena el vuelo y construye sus gráficos. Para comprobar un registro sin almacenarlo, use el punto final de Verificación CSV en su lugar. No hay zona de pruebas en vivo en esta página, porque cada llamada correcta crea un vuelo almacenado real.
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.



















