Saltar al contenido principal
Móvil Guías

Estrategia de versionado de API: guía completa para decidir

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

Estrategia de versionado de API: guía completa para decidir

Normalmente no te das cuenta de una estrategia de versionado de API hasta que un lanzamiento rompe algo que funcionaba ayer. Se publica una app móvil, se renombra un campo del backend, el ciclo de revisión de la tienda se alarga y el soporte empieza a recibir la misma queja de usuarios que no actualizan desde hace semanas. Ese es el momento en que «evitaremos los 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 decoración en la documentación, y por qué una introducción útil como qué cuenta como documentación de API ayuda a delimitar la frontera entre material de referencia y compromisos reales de compatibilidad.

Tabla de contenidos

Por qué tu API necesita una estrategia de versionado

He visto este fallo desde tres ángulos. Un equipo de backend eliminó un campo de la respuesta porque nadie en staging se quejó. Una versión móvil que ya estaba en las tiendas de apps no se pudo actualizar a la fuerza lo bastante rápido. Los clientes enterprise seguían llamando al endpoint antiguo porque su ciclo de compras era más lento que el tren de releases.

Eso es lo que el versionado pretende evitar. Es una promesa de compatibilidad entre el propietario de API y cada cliente que depende del contrato. No se trata solo de mantener las URLs ordenadas, sino de hacer explícitas las reglas 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 pertenece a la misma disciplina de contrato que el resto de la superficie de API.

Regla práctica: si los clientes no pueden actualizarse 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 más grande necesita reglas que sobrevivan a los traspasos. El control del cliente importa porque los clientes web pueden refrescarse rápido, pero los clientes móviles no. La cadencia de lanzamientos importa porque un equipo que publica con frecuencia puede corregir errores más rápido que uno que lanza tras aprobaciones y revisión de la tienda.

Un equipo de backend que solo atiende a consumidores internos puede mantener un versionado ligero durante mucho tiempo. Una API pública con integradores de terceros necesita límites mucho más claros. Una app móvil con comportamiento offline o adopción lenta requiere la planificación más estricta, porque una vez que una mala versión del cliente está en circulación, tienes que convivir con ella hasta que los usuarios actualicen.

Los modos de fallo son predecibles. El fallo silencioso es el más obvio, pero el problema de las tiendas de apps suele ser peor, porque la tienda no aceptará un parche con la suficiente rapidez para rescatar a los usuarios que ya están en builds antiguos. La cola larga son los clientes enterprise que siguen usando un endpoint viejo porque su rollout depende de aprobaciones, no de preferencias de ingeniería.

Una buena estrategia responde preguntas antes de que algo se rompa. Qué cambios requieren una nueva versión mayor. Qué clientes reciben el aviso primero. Cuánto tiempo siguen activas las versiones antiguas. Esas decisiones importan aún más en apps móviles, porque los usuarios no las recargan como páginas web, y equipos como los responsables de apps multiplataforma 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, sigues eligiendo una política. Solo que la haces invisible para todos los que tienen que convivir con ella.

Comparativa de los cuatro patrones de versionado

Los cuatro patrones comunes resuelven el mismo problema en distintos lugares. El versionado por URI pone la versión en la ruta, el versionado por header la mueve a los metadatos de la petición, el versionado por query parameter mantiene la ruta base estable y añade un parámetro, y el versionado por media type usa negociación de contenido. La elección correcta depende de si tu equipo valora la transparencia, el comportamiento de caché o la limpieza de URLs a largo plazo.

Versionado por URI

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

La contrapartida es obvia: la versión se filtra en cada ruta y el path puede convertirse en un cementerio de releases antiguos si la deprecación es descuidada. Es simple, pero esa simplicidad puede tentar a los equipos a mantener v1 activa mucho más tiempo del previsto.

Versionado por header

Una petición como Accept: application/vnd.example.v2+json mantiene la URL limpia y permite que varias versiones del contrato compartan la misma ruta de recurso. Eso es útil cuando un mismo endpoint debe atender a distintos consumidores sin sobrecargar la estructura de rutas. También se lleva bien con APIs que ya usan negociación de formatos.

La parte negativa es la fricción operativa. El versionado es más difícil de ver al depurar, y las cachés o los proxies deben configurarse con cuidado para que no mezclen respuestas. Para los equipos que enrutan a través de CDNs o capas edge, esa disciplina extra importa.

Versionado por query parameter

/users?version=2 es fácil de añadir y resulta cómodo para APIs de partners que necesitan una vía de migración rápida. Viene bien cuando la ruta 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 las variaciones por query, y el gateway de API a menudo necesita lógica personalizada para respetarlas. Eso lo hace más frágil de lo que parece a primera vista.

Versionado por media type

El versionado por media type usa el Accept header para pedir una representación específica, lo que mantiene estable la URL del recurso y permite una negociación de contenido más granular. Es atractivo para APIs maduras que quieren separar la identidad del recurso de la forma del contrato. Es un primo cercano del versionado por headers, 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. Es limpio una vez establecido, pero exige disciplina de cada equipo que toque el API.

Patrón Visibilidad Caché Ideal para
Versionado por URI Alta Straightforward Equipos pequeños, depuración, onboarding rápido
Versionado por header Bajo en la URL, alto en code Requiere configuración cuidadosa APIs públicas, rutas de recursos estables
Versionado por query parameter Medio Truculento APIs de socios, migraciones rápidas
Versionado por media type Bajo en la URL, medio en headers Requiere cachés conscientes de la negociación APIs maduras, control fino de contratos

La mecánica interna difiere, pero el patrón de compensación es estable. La versionado por URI gana en simplicidad y depurabilidad, mientras que El versionado por header y media type gana en URLs limpias y negociación más granular. Como analogía de producto relacionada, el las diferencias de versionado de Capacitor guían muestra cómo incluso los sistemas de release adyacentes terminan equilibrando la claridad con la complejidad del enrutamiento.

Semantic Versioning aplicado a APIs

Una etiqueta SemVer solo ayuda si el equipo acuerda qué cuenta como una ruptura de contrato. MAJOR incluye breaking changes, MINOR incluye adiciones retrocompatibles, y PATCH incluye correcciones de errores que no alteran el contrato. Esa regla es útil porque los consumidores pueden asimilar 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 breaking change si algún cliente lo lee. Renombrar una propiedad también es un breaking change por la misma razón. Cambiar el significado de un valor también es un breaking change, 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: clave API de Webtwizz es un complemento útil cuando un aumento de versión también cambia cómo los clientes se autentican o rotan credenciales.

Los números de versión solo ayudan si el equipo los usa para señalar el comportamiento. El guía de versionado semántico de Capgo toma esa visión operativa, que es el instinto correcto también para las versiones de API. SemVer se convierte en una regla de release, no en una elección de marca.

Para clientes móviles, esa disciplina importa más que para apps web. Una app en el teléfono puede permanecer instalada durante meses, y no puedes forzar a cada usuario a la última versión del contrato de la noche a la mañana. Eso convierte a las versiones mayores, las ventanas de deprecación y las notas de compatibilidad en parte del proceso de release, no en algo a posteriori.

La regla práctica sigue siendo simple. Añade libremente cuando el cambio sea compatible hacia atrás. Rompe solo cuando tengas que hacerlo. Cuando rompas, aumenta la versión mayor y ofrece a los clientes una ruta de migración.

Cómo elegir el patrón ideal para tu equipo

La decisión se vuelve más clara cuando miras tres ejes juntos, no uno a la vez. Tamaño del equipo, control del cliente, y frecuencia de releases influyen más en la elección de versionado que la ideología. Una startup pequeña con releases semanales no tiene el mismo problema que una plataforma fintech que atiende a integradores externos que actualizan según sus plazos de compra.

Un diagrama de flujo que ayuda a los equipos a elegir el patrón de versionado de API adecuado según el tamaño, el control y la cadencia.

Equipos pequeños con despliegues rápidos

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

El contratiempo es el cambio constante de URLs. Una v1 es público, la tentación es seguir apilando versiones y evitar la limpieza. Los equipos pequeños necesitan una política de deprecación estricta desde el principio, o el patrón “simple” se convertirá en una proliferación de versiones.

APIs públicas grandes con poco control sobre el cliente

Una fintech regulada o una plataforma con muchas integraciones de socios debería preferir versionado por cabecera o versionado por media type. Esto 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 costo es la disciplina operativa. Las cachés, los proxies y las herramientas de soporte deben saber qué versión pidió cada petición. Para este segmento, la infraestructura extra vale la pena porque los clientes duran mucho y son difíciles de coordinar.

Agencias y trabajo para clientes con plazos ajustados

Una agencia que lanza una app para un cliente suele querer 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 coincide con 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 basado en 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 actualizaciones de la noche a la mañana. Un usuario de iPhone puede quedarse con un build antiguo durante meses, y una app Android instalada manualmente puede durar incluso más. Eso convierte el versionado en algo menos estético y más sobre mantener vivos los caminos de code antiguos y nuevos al mismo tiempo.

Una startup que lanza una app Capacitor

Una startup lanza una app de CapacitorJS y usa Capgo live updates para empujar una corrección de JavaScript a un grupo de usuarios. La app necesita un nuevo campo de API después de la actualización del bundle, pero no todos los dispositivos reciben el nuevo code el mismo día. La jugada más segura es dejar que la app detecte el comportamiento antiguo y nuevo del servidor con gracia, mientras API mantiene el contrato antiguo disponible durante el despliegue.

Eso importa porque las actualizaciones en vivo no cambian el contrato del backend por sí solas. Solo reducen el desfase entre code y la distribución. El Guía de flujo de trabajo de versionado de Capgo encaja perfectamente aquí, ya que trata el despliegue de bundles como un problema de compatibilidad controlado, no como un reemplazo masivo.

Una empresa regulada con dispositivos de campo de larga duración

Un equipo de atención médica que apoya a personal de campo en tablets antiguas tiene una restricción diferente. La app podría seguir en uso mucho después de que se lance un build más nuevo, y API no puede asumir una ventana de actualización corta. El patrón seguro es mantener v1 vivo, enrutar por versión de cliente e instrumentar el uso para que el equipo sepa cuándo un cierre es realista.

La documentación también debe ser clara tanto para el equipo de ingeniería como para los usuarios que diagnostican problemas sobre el terreno. Una guía práctica sobre los endpoints de API puede ayudar a un equipo a estandarizar nombres, rutas y expectativas del cliente sin pretender 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 un caso, controlas los canales de actualización. En el otro, no. Por eso, los equipos móviles necesitan una mentalidad de contrato más estricta de la que suelen esperar los equipos web-first.

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

Lo más difícil del versionado no es crear la nueva versión, sino desactivar 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 puntual.

Haz visible el retiro de versiones

Usa señales de deprecación en la respuesta y respáldalas con una fecha de sunset real. Los headers útiles son Deprecación, Retiro, y un Enlace a la guía de migración. Eso indica a los clientes que la versión antigua sigue activa por ahora, pero con un plazo límite.

La fecha de descontinuación debe basarse en el uso real, no en el optimismo. Las APIs públicas suelen necesitar una ventana más corta que los productos empresariales, porque la mezcla de consumidores es más volátil. Para clientes grandes, una ejecución paralela más larga suele ser más segura, ya que las migraciones implican a más personas y más pruebas.

Ejecuta dos versiones en paralelo

El soporte en paralelo es caro, pero menos que un incidente de soporte. El informe de API de 2025, resumido en un análisis de ingeniería de 2026, afirma 60% de los equipos versionan sus APIs, pero solo 26% usan versionado semántico y apenas 17% ejecutan pruebas de contrato (análisis). Esa brecha importa porque versionar sin disciplina deja a los equipos adivinando si la descontinuación es segura.

Asigna a una sola persona la responsabilidad de la migración, aunque muchos ayuden. Ese responsable hace seguimiento del uso, gestiona la comunicación con los clientes y decide cuándo mover la fecha de descontinuación. Sin ese rol, las versiones antiguas permanecen porque nadie se siente responsable del corte final.

El Guía de migración del versionado de API señala una brecha real en los consejos más extendidos: la mayoría de las fuentes dice “soporta varias versiones” y “avisa con antelación”, pero pocas explican quién es responsable de la migración o cómo se aplica la política de retirada. Esa brecha es justo donde quedan varados los clientes de cola larga.

Testing y monitoreo para detectar breaking changes a tiempo

Una política de versionado sin pruebas 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 bucle que detecte fallos antes de que lo haga un cliente.

Integra el contrato en el pipeline

Las pruebas de contrato van en CI y deben fallar cuando la implementación ya no coincide con el esquema publicado o la interacción esperada. Herramientas como Pact, Spectral y las pruebas de contrato de Postman son opciones habituales porque hacen que el contrato sea ejecutable en lugar de una aspiración. El diff de esquemas en el pipeline de diseño es la segunda salvaguarda, ya que bloquea cambios breaking evidentes antes del merge.

La monitorización en producción es la tercera salvaguarda. Rastrea el uso por versión, endpoint y cliente para saber quién sigue en v1 y si sus tasas de error se están desviando. Esa es la única forma fiable de decidir cuándo es seguro retirar una versión.

Patrón útil: verificación del esquema en tiempo de diseño, prueba de contrato en CI, métricas de versión en producción y luego rollback si el perfil de errores cambia tras el lanzamiento.

El guía de pruebas automatizadas es relevante aquí porque la misma disciplina que se usa para la seguridad de los lanzamientos móviles se aplica a la seguridad del rollout de API. Buscas una exposición escalonada, comportamiento observable y una vía de rollback rápida cuando un cohorte se comporta mal. Eso aplica tanto si lanzas un JS bundle como si cambias un contrato.

Un diagrama que ilustra un ciclo de tres pasos de testing y monitoreo para evitar breaking changes en las APIs.

Cuando estas piezas trabajan juntas, el versionado deja de ser reactivo. El equipo de API detecta fallos antes, 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 hacer esto realidad es poner la política por escrito y obligar al equipo a usarla. Una estrategia de versionado resulta útil cuando está en el mismo lugar que el resto del proceso de release, no 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 e incorpóralo a 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 cuando la implementación y el contrato diverjan.
  • 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 cohortes de release para bundles móviles, la misma disciplina aplica aquí. La guía del proceso 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 hacer imposible el cambio, sino en hacer que los cambios sean sobrevivibles. Define la política, pruébala, monitorízala y da a los clientes una ruta de transición antes de que se cierre la antigua.


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

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de 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 flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.