AEROCOPI
[ DOCUMENTACIÓN · API ]

La API de AeroCopi,
v1 en beta

La API v1 ya responde en producción. Cinco recursos REST, claves con permisos granulares, webhooks firmados y una especificación OpenAPI que puedes descargar hoy. Disponible para cualquier cuenta: la beta es abierta.

Está en producción, pero todavía en beta

Los endpoints listados aquí funcionan hoy. Durante la beta puede que añadamos algún campo nuevo a una respuesta, pero no rompemos lo que ya existe: v1 es un contrato. La referencia canónica y siempre al día es el openapi.json; si algo de esta página y la spec no coincide, manda la spec.

[ EN PRODUCCIÓN ]

Cuatro pilares, funcionando hoy

La API se apoya en cuatro ideas simples, y las cuatro están vivas en producción. Nada de esto es una promesa para el lanzamiento: son endpoints que puedes llamar en cuanto tengas tu clave.

En producción

REST sobre HTTPS

Cinco recursos REST predecibles —drones, pilotos, vuelos, trabajos y clientes— con respuestas en JSON, paginadas (limit, offset, total) y siempre cifradas en tránsito. Cada clave solo ve los datos de su organización. Base: app.aerocopi.com/api/v1.

En producción

Claves con permisos granulares

Claves con formato ak_live_… que generas en Ajustes → API del panel (rol owner o admin). Se muestran una sola vez; en la base de datos solo queda su hash SHA-256. Ocho scopes para dar exactamente el permiso que necesitas, ni uno más.

En producción

Lectura y escritura

Lees los cinco recursos; escribes vuelos, trabajos y clientes con POST. Cada creación se valida con Zod, se aísla contra accesos cruzados (anti-IDOR) y queda marcada como source='api', para que sepas de un vistazo qué entró por integración.

En producción

Webhooks firmados

Suscribe una URL a cinco eventos y tu sistema se entera al momento, sin sondear. Cada entrega va firmada con HMAC-SHA256 estilo Stripe y se reintenta con backoff. El secreto whsec_ se muestra una vez y verificas la firma con él.

[ RECURSOS ]

Lo que puedes llamar hoy

Cinco recursos bajo /api/v1. Todas las listas se paginan con limit y offset y devuelven el total. Cada método exige su scope; una clave sin el permiso recibe un 403.

GET
/api/v1/drones

Tu flota con MTOM, designación de clase, seguro RC y estado.

drones:read
GET
/api/v1/pilots

Pilotos de la organización con su ID de piloto AESA y experiencia.

pilots:read
GETPOST
/api/v1/flights

Logbook completo; registra vuelos desde tu propio sistema.

flights:read · flights:write
GETPOST
/api/v1/projects

Trabajos con cliente, tipo de servicio, fechas y estado.

projects:read · projects:write
GETPOST
/api/v1/clients

Cartera de clientes con contacto, NIF y sector.

clients:read · clients:write
[ EJEMPLO ]

Pedir tu flota, sin misterio

Una petición autenticada con tu clave y una respuesta en JSON con tus aeronaves. Esto funciona en producción: cambia ak_live_… por tu clave real y te devuelve tu flota. Toda respuesta incluye cabeceras X-RateLimit-* para que sepas cuánto te queda sin esperar al 429.

La filosofía es la de siempre en AeroCopi: lo construye un piloto FPV harto del papeleo, no un comité. Si algo se puede hacer obvio, se hace obvio. Para ver qué datos hay detrás de cada recurso, mira la gestión de flota y el logbook digital.

GET /api/v1/dronesen producción
# Petición
GET /api/v1/drones?limit=50 HTTP/1.1
Host: app.aerocopi.com
Authorization: Bearer ak_live_2f9c8d1e4b7a…
Accept: application/json

# Respuesta 200 · application/json
{
  "data": [
    {
      "id": "9f8c1e42-3b7a-4d21-8c66-1e2f4a9d0b55",
      "registroAesa": null,
      "serialNumber": "1581F5FKD23A00P00X8Q",
      "nickname": "Mavic-01",
      "manufacturer": "DJI",
      "model": "Mavic 3 Enterprise",
      "mtomGrams": 920,
      "classDesignation": "C2",
      "status": "operative",
      "acquiredAt": "2025-03-14",
      "insuranceExpiresAt": "2026-09-30",
      "createdAt": "2026-01-12T09:22:41.318Z",
      "updatedAt": "2026-06-28T17:03:10.774Z"
    }
  ],
  "meta": {
    "pagination": { "limit": 50, "offset": 0, "total": 7, "hasMore": false }
  }
}

El contrato exacto de cada recurso —campos, tipos y errores— vive en el openapi.json. Los identificadores y fechas del ejemplo son ilustrativos; la forma de la respuesta es la real.

[ EN POCAS PALABRAS ]

Qué hay, sin rodeos

Lo honesto primero: la API v1 ya responde en producción. Hay clave que generar y peticiones que lanzar. Y el acceso ya no tiene matices: la beta es abierta, creas tu cuenta gratis y generas tu clave sin esperar a nadie.

Los datos que expone se gestionan dentro de AeroCopi y son tuyos: la API es la puerta para sacarlos a tu BI, tu ERP o donde los necesites. Si quieres ver el estado del servicio o el resto de la documentación, tienes el estado del servicio y el centro de documentación. Para ver qué viene después, pásate por el roadmap.

[ Ficha de la API ]
Disponibilidad
En producción (v1)
Acceso
Cualquier cuenta · beta abierta, registro libre
Base URL
app.aerocopi.com/api/v1
Protocolo
REST sobre HTTPS · JSON paginado
Autenticación
Clave Bearer ak_live_… · 8 scopes
Lectura
Drones, pilotos, vuelos, trabajos y clientes
Escritura
Vuelos, trabajos y clientes (POST)
Webhooks
5 eventos, firmados con HMAC-SHA256
Límites
1.000–20.000 peticiones / 15 min según plan
[ EMPEZAR ]

¿Vas a integrar AeroCopi? Genera tu clave

Si ya tienes cuenta, entra al panel y crea tu clave en Ajustes → API en menos de un minuto. Si todavía no, crea tu cuenta gratis: la beta es abierta y no necesitas invitación. ¿Tienes una integración concreta en mente? Cuéntanosla a hola@aerocopi.com y te echamos una mano.

[ PREGUNTAS ]

Sobre la API

Sí. La API v1 está en producción, sobre app.aerocopi.com/api/v1, con cinco recursos REST: drones, pilotos, vuelos, trabajos y clientes. Se autentica con una clave Bearer y todos los datos están aislados por organización. Está disponible para cualquier cuenta: la beta es abierta (abierta desde julio de 2026 — registro libre) y puedes crear la tuya gratis en app.aerocopi.com/registro.

Leer los cinco recursos (flota, pilotos, logbook de vuelos, trabajos y clientes) y crear vuelos, trabajos y clientes con POST. Además puedes suscribir webhooks a cinco eventos (trabajo creado, vuelo registrado, reporte generado, factura emitida y alerta de mantenimiento) para que tu sistema reaccione en tiempo real. Los recursos de drones y pilotos son de solo lectura por ahora.

Con una clave de API en la cabecera 'Authorization: Bearer ak_live_…'. La generas en Ajustes → API del panel (hace falta rol owner o admin), eliges sus scopes y se muestra una única vez: cópiala en ese momento porque en la base de datos solo guardamos su hash SHA-256. Cada clave tiene un límite de peticiones según el plan de tu organización: de 1.000 a 20.000 cada 15 minutos. Si lo superas, recibes un 429 con cabecera Retry-After.

Cada entrega llega con dos cabeceras: X-Aerocopi-Timestamp (epoch en segundos) y X-Aerocopi-Signature (con formato sha256=<hex>). Toma el timestamp y el cuerpo crudo de la petición, concaténalos como `${timestamp}.${body}`, calcula el HMAC-SHA256 de esa cadena usando tu secreto whsec_ y compáralo, en tiempo constante, con el hex de X-Aerocopi-Signature. Rechaza además los timestamps demasiado viejos: como el timestamp va dentro de lo firmado, nadie puede reutilizar una firma con otra fecha (anti-replay). Es el mismo esquema que usa Stripe.

En la especificación OpenAPI 3.1, pública y siempre al día, en https://app.aerocopi.com/api/v1/openapi.json (se cachea 5 minutos). Es la fuente canónica: rutas, parámetros, esquemas de cada recurso y respuestas de error salen de ahí. Puedes cargarla en Postman, Insomnia o generar un cliente con ella.

Si ya tienes cuenta, entra en el panel y créala en Ajustes → API en menos de un minuto. Si todavía no, crea tu cuenta gratis en app.aerocopi.com/registro: la beta es abierta y no necesitas invitación. ¿Tienes una integración concreta en mente? Escríbenos a hola@aerocopi.com y la miramos contigo.