Saltar al contenido principal
Móvil Guías

Estrategia de versionado de API: Guía de decisión completa

Elige la estrategia de versionado de API ideal para tu equipo. Compara patrones URI, headers y query, tácticas de migración y mejores prácticas de testing.

Estrategia de versionado de API: Guía de decisión completa

Normalmente no notas una estrategia de versionado de API hasta que un release rompe algo que ayer funcionaba. Se lanza una app móvil, se renombra un campo en el backend, el ciclo de revisión de la store se alarga y soporte empieza a recibir la misma queja de usuarios que no han actualizado en semanas. Ese es el momento en que "evitaremos breaking changes" deja de ser un plan y se convierte en un gasto.

La pregunta práctica no es si versionar o no. La pregunta es cómo mantener vivos a los clientes antiguos sin congelar el API para siempre. Por eso los buenos equipos tratan el versionado como parte del contrato, no como un adorno en la docs, y por eso una guía útil como qué cuenta como documentación de API ayuda a definir el límite entre el material de referencia y los compromisos reales de compatibilidad.

Table of Contents

Por qué tu API necesita una estrategia de versionado

He visto este fallo desde tres ángulos. Un equipo de backend eliminó un campo de respuesta porque nadie se quejó en staging. Una versión móvil ya en las app stores no pudo actualizarse por la fuerza lo suficientemente rápido. Clientes enterprise seguían llamando al endpoint antiguo porque su ciclo de compras era más lento que el release train.

Eso es precisamente lo que el versionado busca prevenir. Es una promesa de compatibilidad entre el dueño de API y cada cliente que dependa de ese contrato. El objetivo no es solo mantener las URLs ordenadas, sino hacer que las reglas sean explícitas para que los equipos sepan qué puede cambiar y qué debe permanecer estable. Si buscas una visión útil de qué se considera documentación de API, ese enfoque ayuda, porque el versionado debe seguir la misma disciplina de contrato que el resto de la superficie de API.

Regla práctica: si los clientes no pueden actualizar según tu calendario, tu API necesita una política de compatibilidad explícita, aunque la URL nunca cambie.

La elección es una matriz, no un eslogan. El tamaño del equipo importa porque un grupo pequeño puede coordinar cambios manualmente, mientras que una organización grande necesita reglas que sobrevivan a los handoffs. El control del cliente importa porque los clientes web pueden refrescar rápido, pero los móviles no. La cadencia de release importa porque un equipo que hace despliegues frecuentes puede corregir errores más rápido que uno que depende de aprobaciones y la revisión de la store.

Un equipo de backend que solo atiende consumidores internos puede mantener un versionado ligero por mucho tiempo. Una API pública con integradores externos requiere límites mucho más claros. Una app móvil con comportamiento offline o adopción lenta necesita la planificación más estricta, porque una vez que una versión de cliente defectuosa se lanza, tendrás que lidiar con ella hasta que los usuarios actualicen.

Los modos de fallo son predecibles. La rotura silenciosa es el más obvio, pero el problema de las tiendas de apps suele ser peor, ya que la tienda no aceptará un parche lo suficientemente rápido para rescatar a los usuarios en builds antiguos. La cola larga son los clientes enterprise que siguen usando un endpoint viejo porque su despliegue depende de aprobaciones, no de preferencias de ingeniería.

Una buena estrategia responde preguntas antes de que ocurra el error. Qué cambios requieren una nueva versión mayor. Qué clientes reciben el aviso primero. Cuánto tiempo permanecen activas las versiones antiguas. Esas decisiones importan aún más en apps móviles, porque los usuarios no las refrescan como páginas web, y equipos como los dueños de apps cross-platform suelen necesitar un plan de release que funcione con herramientas como Comparativa de Capgo sobre las diferencias de versionado entre Capacitor y Appflow.

Si no estás versionando, aun así estás eligiendo una política. Solo que la estás haciendo invisible para todos los que tienen que vivir con ella.

Comparativa de los cuatro patrones de versionado

Los cuatro patrones comunes resuelven el mismo problema de distintas formas. El versionado por URI incluye la versión en la ruta, el de headers la mueve a los metadatos de la petición, el de query parameters mantiene la ruta base estable añadiendo un parámetro, y el de media type usa negociación de contenido. La elección depende de si tu equipo prioriza la transparencia, el comportamiento de la caché o la limpieza de las URLs a largo plazo.

Versionado por URI

/v1/users es el patrón más fácil de leer en logs, trazas de navegador y tickets de soporte. Un desarrollador junior puede identificar la versión al instante, y un agente de soporte puede pedirle al cliente que pegue la URL exacta. Esa visibilidad es la razón por la que sigue siendo el estándar por defecto.

La desventaja es obvia: la versión se filtra en cada ruta, y el path puede convertirse en un cementerio de versiones antiguas si la depreciación no se gestiona bien. Es simple, pero esa simplicidad puede tentar a los equipos a mantener la v1 viva mucho más de lo planeado.

Versionado por Header

Una petición como Accept: application/vnd.example.v2+json mantiene la URL limpia y permite que múltiples versiones del contrato compartan la misma ruta de recurso. Esto es útil cuando un mismo endpoint debe dar servicio a distintos consumidores sin saturar la estructura de rutas. También funciona muy bien con APIs que ya usan negociación para los formatos.

El punto negativo es la fricción operativa. El versionado es más difícil de ver durante el debugging, y las cachés o proxies deben configurarse con cuidado para no mezclar respuestas. Para equipos que usan CDNs o capas edge, esa disciplina extra es fundamental.

Versionado por Query parameter

/users?version=2 es fácil de añadir y práctico para APIs de partners que necesitan una vía de migración rápida. Puede resultar útil cuando la ruta en sí se mantiene estable pero el contrato necesita un selector ligero. El navegador y la mayoría de las librerías cliente entienden los query strings sin complicaciones.

La desventaja es la complejidad del caché. Los sistemas intermedios pueden gestionar mal la variación basada en query, y el gateway de API a menudo necesita lógica personalizada para respetarla. Eso lo hace más frágil de lo que parece a primera vista.

Versionado por media type

El versionado por media type utiliza el Accept header para solicitar una representación específica, lo que mantiene estable la URL del recurso y permite una negociación de contenido más granular. Eso resulta atractivo para APIs maduras que quieren separar la identidad del recurso de la forma del contrato. La técnica es muy similar al versionado por header, pero la negociación es más explícita.

El coste es la fricción de adopción, porque menos equipos se sienten cómodos leyendo o depurando media types que rutas. Queda limpio una vez establecido, pero exige disciplina a cada equipo que toque API.

Patrón Visibilidad Caché Ideal para
Versionado por URI Alto Straightforward Equipos pequeños, debugging, onboarding rápido
Versionado por headers Bajo en URL, alto en code Requiere configuración cuidadosa APIs públicas, rutas de recursos estables
Versionado por query params Medio Complejo APIs de partners, migraciones rápidas
Versionado por media type Bajo en URL, medio en headers Requiere cachés con soporte para negociación APIs maduras, control de contrato detallado

La mecánica interna varía, pero el patrón de compromiso es estable. El versionado por URI gana en simplicidad y depuración, mientras que el versionado por header y media type gana en URLs limpias y negociación fina. Como analogía de producto, las diferencias de versionado de Capacitor muestran cómo sistemas de release cercanos terminan equilibrando claridad y complejidad de routing.

Semantic Versioning aplicado a APIs

Una etiqueta SemVer solo sirve si el equipo acuerda qué constituye una ruptura de contrato. MAJOR incluye cambios disruptivos, MINOR incluye adiciones compatibles hacia atrás, y PATCH incluye correcciones de errores que no alteran el contrato. Esa regla es útil porque los consumidores pueden integrar actualizaciones minor y patch con menos coordinación, mientras que un salto major les indica que deben planificar cambios en code.

¿Qué rompe realmente a los clientes?

Eliminar un campo de respuesta es un cambio disruptivo si algún cliente lo lee. Renombrar una propiedad también lo es por la misma razón. Cambiar el significado de un valor también rompe la compatibilidad, incluso si la estructura del JSON se mantiene igual.

Añadir un campo opcional es una adición. Añadir un nuevo endpoint es una adición. Corregir una errata en una descripción es un patch porque cambia la comunicación, no el comportamiento. Por eso SemVer funciona para APIs, no solo para librerías.

Operativamente, trato cualquier cambio que obligue a un consumidor a editar code como major hasta que se demuestre lo contrario.

El estudio empírico anterior encontró que, entre las APIs que usan el campo de versión, el versionado semántico representaba una gran parte de los lanzamientos. Eso no significa que cada API deba usarlo en todas partes, pero demuestra que SemVer es un modelo mental común en los historiales públicos de API. En la práctica, el resto del campo suele usar etiquetas de calendario, convenciones mixtas o ninguna disciplina explícita.

Versionar el contrato, no solo el endpoint

Una versión major debería incluir normalmente una nota de migración y un periodo de compatibilidad. Esto es aún más crítico cuando hay secretos, auth o firma de peticiones de por medio, ya que un cambio de versión puede alterar las superficies que los equipos deben proteger. El Guía de seguridad de claves de Webtwizz API es un complemento útil cuando un aumento de versión también cambia la forma en que los clientes se autentican o rotan credenciales.

Los números de versión solo sirven si el equipo los usa para señalizar comportamientos. La guía de versionado semántico de Capgo adopta esa visión operativa, que es el instinto correcto también para los lanzamientos de API. SemVer se convierte en una regla de release, no en una elección de branding.

Para clientes móviles, esa disciplina importa más que en las web apps. Una app puede estar instalada meses y no puedes obligar a todos los usuarios a usar el último contrato de la noche a la mañana. Eso hace que las versiones mayores, los periodos de deprecación y las notas de compatibilidad sean parte del proceso de release, no algo secundario.

La regla práctica es simple. Añade cambios libremente si son backward-compatible. Rompe solo cuando sea necesario. Cuando rompas algo, aumenta la versión mayor y ofrece a los clientes una ruta de migración.

Elegir el patrón adecuado para tu equipo

La decisión es más clara cuando analizas tres ejes en conjunto, no uno por uno. Tamaño del equipo, Control del cliente, y cadencia de lanzamientos moldea la elección de versionado más que la ideología. Una startup pequeña con lanzamientos semanales no tiene el mismo problema que una fintech que sirve a integradores externos con tiempos de adquisición rígidos.

Un diagrama de flujo para ayudar a los equipos a elegir el patrón de versionado de API ideal según su tamaño, control y cadencia.

Equipos pequeños con despliegues rápidos

Una startup de dos personas que lanza semanalmente debería inclinarse por versionado por URI con SemVer. La razón no es la pureza, sino la velocidad bajo presión. Los logs son legibles, el enrutamiento es obvio y el equipo puede explicar el contrato a los nuevos integrantes sin un largo proceso de onboarding.

El inconveniente es la rotación de URLs. Una vez v1 es pública, la tentación es seguir acumulando versiones y evitar la limpieza. Los equipos pequeños necesitan una política de deprecación estricta desde el inicio, o el patrón "simple" se convertirá en un caos de versiones.

APIs públicas grandes con poco control del cliente

Una fintech regulada o una plataforma con muchas integraciones de partners debería preferir versionado por header o versionado por media type. Eso mantiene estable la ruta de un recurso mientras permite que múltiples contratos coexistan detrás de ella. Es la mejor opción cuando no puedes pedir a los clientes que se actualicen de inmediato o coordinar una fecha de corte única.

El coste es la disciplina operativa. Los caches, proxies y herramientas de soporte deben entender qué versión solicitó la petición. Para este segmento, el trabajo extra de infraestructura vale la pena porque los clientes son de larga duración y difíciles de coordinar.

Agencias y proyectos con plazos estrictos

Una agencia que lanza una app para un cliente suele preferir Versionado por URI porque es la opción menos ambigua durante el handoff. El cliente puede ver la versión en cada URL, y las dudas de soporte son más fáciles de resolver cuando la app ya está en producción. Esto lo hace práctico para proyectos donde la mantenibilidad depende de la claridad, no de la negociación.

El sacrificio es la elegancia. Las URLs limpias importan menos que una entrega predecible cuando heredas la carga de soporte de alguien más.

Una buena regla es optimizar para el cliente que menos controlas, no para el equipo en el que más confías.

El árbol de decisión de la infografía sigue esa regla. Los equipos internos pequeños pueden tolerar la simplicidad basada en rutas. Las APIs de partners suelen necesitar más flexibilidad. Las APIs públicas grandes suelen beneficiarse del control mediante headers, ya que la cadencia de lanzamientos y la diversidad de clientes hacen que el versionado a nivel de ruta sea demasiado tosco.

Versionado en la práctica para apps móviles y multiplataforma

Los clientes móviles cambian las reglas porque no puedes forzar una actualización de la noche a la mañana. Un usuario de iPhone puede quedarse en una build antigua por meses, y una app de Android instalada vía sideload puede durar incluso más. Eso hace que el versionado no sea una cuestión estética, sino de mantener vivos los paths de code viejos y nuevos al mismo tiempo.

Una startup que lanza una app Capacitor

Una startup lanza una app con CapacitorJS y usa Capgo live updates para enviar un fix de JavaScript a un grupo de usuarios. La app necesita un nuevo campo API tras la actualización del bundle, pero no todos los dispositivos reciben el nuevo code el mismo día. Lo más seguro es que la app detecte el comportamiento del servidor (viejo y nuevo) con elegancia, mientras el API mantiene disponible el contrato antiguo durante el rollout.

Esto es clave porque los live updates no cambian el contrato del backend por sí solos. Solo reducen el desfase entre code y la distribución. El Guía de workflow de versionado de Capgo encaja perfectamente aquí, porque trata el rollout de bundles como un problema de compatibilidad controlado en lugar de un simple reemplazo total.

Una empresa regulada con dispositivos de campo de larga vida útil

Un equipo de salud que da soporte a personal de campo con tablets antiguas tiene otra limitación. La app puede seguir usándose mucho después de lanzar una build nueva, y el API no puede asumir una ventana de actualización corta. El patrón seguro es mantener viva la v1, enrutar por versión de cliente e instrumentar el uso para saber cuándo un sunset es realista.

La documentación también debe ser clara tanto para el equipo de ingeniería como para los usuarios que diagnostican problemas en el campo. Una guía práctica sobre los endpoints de API puede ayudar al equipo a estandarizar nombres, rutas y expectativas del cliente sin asumir que todos se actualizan al mismo ritmo.

La misma estrategia de versionado se comporta distinto en cada caso porque los clientes actúan de forma diferente. En uno, los canales de actualización están bajo tu control; en el otro, no. Por eso, los equipos móviles necesitan un enfoque de contrato más estricto de lo que suelen esperar los equipos web.

Deprecación, migración y sunset sin romper clientes

Lo más difícil del versionado no es crear la nueva versión, sino apagar la antigua sin sorprender a quienes aún la usan. Los equipos que lo hacen bien tratan la deprecación como un proceso operativo, no como un anuncio único.

Haz visible el retiro

Usa señales de deprecación en la respuesta y respalda con una fecha de sunset real. Los headers útiles son Deprecation, Sunset, y un Link a la guía de migración. Esto le indica a los clientes que la versión antigua sigue activa por ahora, pero que tiene fecha de caducidad.

La fecha de sunset debe basarse en el uso real, no en el optimismo. Las API públicas suelen requerir un periodo más corto que los productos enterprise, ya que su mix de consumidores es más volátil. Para clientes más grandes, un periodo de ejecución en paralelo más largo suele ser más seguro, ya que las migraciones involucran a más personas y más testing.

Ejecutar dos versiones en paralelo

El soporte paralelo es costoso, pero más barato que un incidente de soporte. El informe de API de 2025, resumido en un análisis de ingeniería de 2026, dice 60% de los equipos versionan sus API, pero solo 26% usan semantic versioning y simplemente 17% ejecutan contract testing (análisis). Esa brecha es importante porque versionar sin disciplina hace que los equipos duden sobre si la deprecación es segura.

Asigna a una persona para liderar la migración, aunque muchos ayuden. Ese responsable monitorea el uso, gestiona la comunicación con los clientes y decide cuándo avanzar el reloj del sunset. Sin ese rol, las versiones antiguas perduran porque nadie se siente responsable del corte final.

El Guía de migración de versionado de API señala un vacío real en los consejos convencionales: la mayoría dice “soporta múltiples versiones” y “anuncia con antelación”, pero pocos explican quién lidera la migración o cómo se aplica la política de sunset. Ese vacío es donde los clientes de larga duración se quedan varados.

Testing y monitoreo para detectar breaking changes a tiempo

Una política de versionado sin tests es solo una lista de deseos. Si el contrato de API puede cambiar en CI sin que nadie lo note, el número de versión no te salvará. Los equipos necesitan un loop que detecte errores antes que el cliente.

Integra el contrato en el pipeline

Los contract tests deben estar en CI y deben fallar cuando la implementación ya no coincida con el schema publicado o la interacción esperada. Herramientas como Pact, Spectral y los contract tests de Postman son opciones comunes porque hacen que el contrato sea ejecutable en lugar de aspiracional. El schema diffing en el pipeline de diseño es la segunda barrera, ya que bloquea cambios disruptivos obvios antes del merge.

El monitoreo en producción es la tercera barrera. Rastrea el uso por versión, endpoint y cliente para saber quién sigue en la v1 y si sus tasas de error están aumentando. Esa es la única forma fiable de decidir cuándo un sunset es seguro.

Patrón útil: check de schema en diseño, contract test en CI, métricas de versión en producción y rollback si el perfil de errores cambia tras el release.

El guía de testing automatizado es relevante aquí porque la misma disciplina usada para la seguridad en lanzamientos móviles se aplica a la seguridad en el rollout de API. Buscas una exposición escalonada, comportamiento observable y una ruta de rollback rápida cuando un cohort falla. Eso aplica tanto si lanzas un JS bundle como un cambio de contrato.

Un diagrama que ilustra un ciclo de tres pasos para probar y monitorear para evitar breaking changes en las API.

Cuando estas piezas trabajan juntas, el versionado deja de ser reactivo. El equipo de API detecta errores pronto, el equipo de soporte tiene evidencia y los clientes reciben menos sorpresas.

Tu checklist de versionado de API y próximos pasos

La forma más rápida de hacerlo realidad es escribir la política y obligar al equipo a usarla. Una estrategia de versionado es útil cuando vive en el mismo lugar que el resto del proceso de release, no solo en la cabeza de alguien.

Una lista de seis pasos para tu estrategia de versionado de API, con iconos, tareas descriptivas y casillas de verificación.

Checklist para copiar y pegar

  • Elige un patrón y escríbelo en la guía de estilo. Si el equipo elige versionado por URI, header, query o media type, documenta el motivo para que futuros releases no improvisen.
  • Define los breaking changes en un párrafo. Incluye eliminaciones, renombramientos y cambios de comportamiento que obliguen a editar el cliente.
  • Añade contract tests al CI. Haz que el pipeline falle si la implementación y el contrato divergen.
  • Publica headers de deprecación y sunset. Los clientes necesitan señales de advertencia legibles por máquinas, no solo artículos de blog.
  • Rastrea el uso por versión. Si no sabes quién usa los endpoints antiguos, no podrás retirarlos de forma segura.
  • Asigna un responsable para la próxima migración. La propiedad evita el problema de "alguien debería encargarse de esto".
  • Realiza un simulacro de deprecación forzada. Simula temporalmente el cierre de la v1 y observa qué clientes, alertas y dashboards fallan primero.

Si tu equipo ya usa cohorts de lanzamiento para bundles móviles, aplica la misma disciplina aquí. La guía de procesos de release management muestra cómo mantener el control del rollout, y esa mentalidad también encaja con las migraciones de API.

Versionar no consiste en imposibilitar los cambios, sino en hacer que sean sostenibles. Define la política, pruébala, monitorízala y ofrece a los clientes una ruta de transición antes de cerrar la anterior.


Capgo ofrece a los equipos móviles el mismo control de lanzamientos en el cliente que una buena estrategia de versionado de API aporta al backend. Si lanzas apps con Capacitor o Electron, visita Capgo para ver cómo las live updates firmadas, el targeting por canales, la observabilidad y la protección contra rollbacks te ayudan a coordinar lanzamientos más seguros y con menos clientes afectados.

Live Updates para apps de Capacitor

Si hay un bug en la capa web, publica el fix con Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el proceso de revisión normal.

Lo último de nuestro blog

Capgo te da los mejores insights para crear una app móvil realmente profesional.