Guías de migraciónDesde Cloudflare AI Gateway
Dejar Cloudflare AI Gateway cuando nada te obliga
Aquí no hay adquisición, ni modo de mantenimiento, ni aviso de obsolescencia. AI Gateway tiene disponibilidad general, se desarrolló activamente durante 2026 y su núcleo es gratuito en una cuenta que ya tienes, así que la pregunta que responde esta página no es cómo migrar sino si hacerlo. Empieza con tres cifras que puedes ir a medir en tu propio gateway, dos de las cuales dicen que te quedes.
Las cuentas de INFRO son de autoservicio. El catálogo, la documentación y el contrato de la API son públicos, el gateway está desplegado, y todo lo que va más allá de v1 está marcado como Más adelante. Planes y prueba
Dónde están las cosas
Nada te obliga a esto
AI Gateway tiene disponibilidad general y se ha construido activamente a lo largo de 2026: límites de gasto en junio, User Insights en agosto. El núcleo es gratuito en cualquier cuenta de Cloudflare. Si alguna página te dice lo contrario, contrástala con el changelog en lugar de creerla.
El solapamiento es mayor que antes
Ambos productos están en la ruta de la solicitud, ponen precio a cada solicitud, atribuyen el gasto a un usuario o un equipo, rechazan una solicitud en un tope en dólares y exportan OpenTelemetry. Hace un año esta comparación era gateway frente a plano de control. Ya no lo es.
Una pregunta lo decide
Si alguien tiene que defender la cifra de costo ante una persona que no la produjo. Si nadie lo hace, el gateway gratuito es la herramienta correcta y esta guía debería terminar aquí. Si alguien lo hace, de eso trata el resto de la página.
Cada una está en tu propio gateway o en tu propio calendario, y cada una produce una respuesta, no una consideración. Dos de las tres terminan la decisión a favor de Cloudflare, que es la distribución honesta: la mayoría de los equipos que leen esto deberían quedarse con lo que tienen.
Tu tasa de aciertos de caché
Analítica de tu gateway, a lo largo de un mes que parecía normal. Cloudflare la informa por gateway.
Esta es la que puede cerrar la decisión por sí sola. INFRO también tiene una caché de respuestas de coincidencia exacta para chat completions, pero empieza vacía, está desactivada hasta que la activas, tiene clave por proyecto y entorno de la clave y, por defecto, solo guarda solicitudes deterministas (temperature 0 o una seed). Calcula qué parte de tus aciertos provino de solicitudes que encajan en eso; el resto pasan a ser llamadas al proveedor tras una migración, facturadas por tu proveedor. Si esa parte es grande, quedarte es la mejor respuesta y ninguna función del resto de esta página la compensa.
Si Unified Billing está activado
Los ajustes de tu gateway. Si Cloudflare compra tu inferencia, aquí es donde lo dice.
Si está activado, no tienes un problema de configuración, tienes uno de compras. INFRO nunca compra inferencia, así que mudarte implica abrir tu propia cuenta con cada proveedor que uses, lo que tarda lo que tarde la incorporación de proveedores. Averígualo ahora y no en la tercera semana.
Con qué frecuencia alguien ajeno a ingeniería pregunta por la cifra
No un panel. Tu último trimestre de conversaciones de finanzas, compras y precios.
Si la respuesta es nunca, el gateway gratuito es la herramienta correcta y esta guía debería terminar aquí; no es una salida cortés, es la recomendación correcta. Un plano de control se gana una suscripción en el momento en que una cifra de costo tiene que defenderse ante alguien que no la produjo, y no antes.
Esta sección está antes de las diferencias a propósito y, a diferencia de las otras guías de esta serie, no te dirige a un tercer producto. Te dirige al que ya usas.
Esta sección está por encima del mapeo a propósito. Cloudflare AI Gateway es un buen producto que no cuesta nada operar, y el resultado correcto más habitual de leer esta página es que la cierres y conserves lo que tienes. Aquí no hay adquisición, ni modo de mantenimiento, ni aviso de deprecación que te apresure; los motivos de abajo no son suavizantes antes de una refutación, son la respuesta siempre que alguno de ellos sea cierto.
Conviene plantearse la migración cuando la cifra de costo tiene destinatario: finanzas preguntando por qué cambió la factura de modelos, un margen de cara al cliente que tienes que mantener, varios equipos que comparten proveedores y discrepan sobre quién gastó qué. Es el punto en que una cifra que nadie ha contrastado con una factura deja de ser suficiente, y es la única afirmación de esta página que la propia documentación de Cloudflare no responde ya.
Quédate donde estás cuando
- El gateway cumple su función y nadie hace preguntas sobre la cifra. Un plano de control se gana su precio cuando alguien ajeno a ingeniería tiene que actuar sobre la cifra de costo. Si eso no ha ocurrido, todavía no se lo ha ganado.
- Necesitas guardrails o DLP en la ruta de la solicitud. Cloudflare analiza el prompt y la respuesta en busca de contenido dañino, y puede bloquear o marcar datos sensibles antes de que lleguen a un proveedor. Los guardrails de INFRO se basan en patrones (PII, secretos, tus términos, solo chat completions); los guardrails por categoría de seguridad de Cloudflare no tienen equivalente.
- Usas Workers AI, o Cloudflare compra tu inferencia a través de Unified Billing. INFRO no opera inferencia y nunca compra ninguna: antes de una migración necesitarías tus propias cuentas con cada proveedor, lo que es un paso comercial, no de configuración.
- Tu enrutamiento depende de ramas condicionales o divisiones porcentuales. Las rutas de INFRO son destinos por prioridad o ponderados sobre tus propias conexiones; un if/else sobre el contenido de la solicitud no tiene equivalente y tendría que pasar a tu aplicación.
- La caché de respuestas soporta una carga real en solicitudes que INFRO no almacenaría en caché. La caché de INFRO solo coincide con solicitudes de chat completions exactas, con clave por proyecto y entorno de la clave, y por defecto solo las deterministas (temperature 0 o una seed); toda solicitud fuera de eso vuelve a ir a tu proveedor tras una migración.
- Estar con un solo proveedor es el punto. Una factura, un conjunto de roles de cuenta y una relación de soporte es un motivo legítimo para elegir el gateway de una plataforma, y agregar un segundo proveedor lo deshace.
Si más de una de estas es cierta, cierra esta página. Preferimos perder la evaluación que ganarla y ser la respuesta equivocada seis semanas después.
Los objetos de Cloudflare frente a los nuestros, leídos en su documentación pública el 20 de septiembre de 2026 y comprobados contra lo que el gateway implementa realmente. Cinco filas dicen que no tenemos nada; son las que vale la pena leer primero.
| Cloudflare AI Gateway | Qué hace allí | En INFRO |
|---|---|---|
| Gatewaydistinto | Un objeto con nombre en tu cuenta de Cloudflare. Es dueño de los registros, la caché, los límites de tasa y las reglas de gasto; un segundo entorno significa un segundo gateway. | No hay un objeto gateway. Una organización es dueña de la política y de la facturación; los proyectos, las claves y el entorno de una clave la acotan. Un segundo entorno es una propiedad de la clave y no un segundo endpoint. |
| `/compat/chat/completions`misma forma | Chat compatible con OpenAI bajo https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat, con los modelos direccionados como provider/model. | Chat compatible con OpenAI bajo https://api.infro.io/v1, con los modelos direccionados como vendor/model. El mismo cliente, la misma forma de solicitud y respuesta, incluidos streaming, llamadas a herramientas y salidas estructuradas. |
| Rutas específicas de proveedordistinto | Una ruta por proveedor que reenvía a la API propia de ese proveedor, de modo que cada uno conserva su forma de solicitud nativa. | Una forma normalizada por modalidad: /chat/completions, /images/generations, /images/edits, /audio/speech, /audio/transcriptions y /videos, que devuelve un trabajo asíncrono. Las APIs nativas de proveedor no se pasan por proxy: una llamada escrita contra la Messages API de Anthropic o generateContent de Gemini tiene que pasar a la forma compatible. |
| Claves de proveedor guardadasdistinto | Claves guardadas por gateway con alias, seleccionadas por solicitud con un encabezado cf-aig-byok-alias, y usadas antes que Unified Billing cuando están presentes ambos. | Conexiones guardadas por organización, selladas, con estado de salud y último error visibles. Cuál sirve una solicitud lo deciden el entorno de la clave y la ruta, no un encabezado que envíe quien llama. |
| Unified Billingnada | Cloudflare compra la inferencia al proveedor y te la factura, con una tarifa sobre los créditos comprados. | Nada, deliberadamente. INFRO nunca compra inferencia y nunca se queda con una parte del gasto en modelos; tus proveedores te facturan directamente con tus propias tarifas. Si Cloudflare está comprando ahora la tuya, necesitas tus propias cuentas de proveedor antes de que una migración sea posible. |
| `cf-aig-metadata`distinto | Hasta cinco entradas de texto, número o booleano por solicitud, enviadas como encabezado, que aparecen en los registros y se pueden usar como dimensión de límite de gasto. | Un objeto metadata en el cuerpo de la solicitud, que nunca se reenvía al upstream: user_id, session_id y cualquier número de claves bajo tags, filtradas en el registro de solicitudes como tag.<key>. Cada lugar donde hoy fijas el encabezado es una edición. |
| `cf-aig-custom-cost`distinto | Tus tarifas negociadas de entrada, salida y caché, enviadas por solicitud en un encabezado, que reemplazan el costo público del modelo para esa llamada. | Tarifas guardadas en la consola por modelo y, de forma opcional, por proveedor, aplicadas a cada solicitud que coincide, con usage.price_source en la respuesta indicando qué tarifa produjo la cifra. Incluido desde el plan Team. |
| Límites de gastomisma forma | Presupuestos en dólares sobre una ventana móvil o fija, acotados por modelo, proveedor o metadatos personalizados, evaluados antes de llamar al proveedor, que devuelven 429 en el tope o recurren a un modelo más barato. Hasta 20 reglas por gateway. | Presupuestos a nivel de organización, proyecto, miembro y clave, evaluados antes de llamar al proveedor, que devuelven 402 budget_exceeded con umbrales de alerta que tú fijas. Se asocian al modelo de objetos y no a los metadatos, así que el tope de un proyecto no depende de que quien llama recuerde un encabezado. |
| Enrutamiento dinámicodistinto | Un grafo de rutas compuesto en un editor visual o como JSON: ramas condicionales según el cuerpo de la solicitud, los encabezados o los metadatos, divisiones porcentuales, nodos de tasa y de presupuesto, publicado sin desplegar. Disponible en el endpoint compatible con OpenAI. | Rutas con nombre con destinos por prioridad o ponderados sobre tus propias conexiones, con comprobaciones de salud y failover antes del primer byte de la respuesta. No hay ramificación condicional según el contenido de la solicitud; una ruta if/else tiene que pasar a tu aplicación. |
| `cf-aig-max-attempts`distinto | Hasta cinco intentos de reintento con un retraso configurable y retroceso constante, lineal o exponencial, fijados por solicitud y válidos con cualquier endpoint de proveedor. | Los reintentos y el failover son política de la ruta y no encabezados por solicitud, así que el comportamiento se configura una vez en la consola y se aplica a todos los que llaman a esa ruta. Una solicitud que falla en todos los destinos informa de cada intento en su traza. |
| Cachédistinto | Respuestas servidas desde la caché de Cloudflare en lugar del proveedor, por latencia y por costo. | Una caché de respuestas de coincidencia exacta para chat completions, desactivada por defecto y activada por organización o proyecto, con un campo cache en el cuerpo de cada solicitud o encabezados X-INFRO-Cache, donde Cloudflare usa encabezados cf-aig-*. No almacena en caché otros endpoints y tiene clave por proyecto y entorno de la clave, así que no se comparte nada entre ellos. |
| Guardrails y DLPdistinto | Los guardrails evalúan el prompt y la respuesta según categorías de seguridad; DLP analiza ambos en busca de información sensible y reemplaza la respuesta con un 400 o marca el hallazgo en un encabezado cf-aig-dlp. Ninguna de las dos páginas de funciones dice cómo se facturan, así que no lo decimos. | Guardrails basados en patrones en chat completions: bloquean, redactan o marcan PII, claves de API y tus propios términos. Sin clasificadores de categorías de seguridad. |
| Workers AInada | Los modelos alojados propios de Cloudflare, a los que se llama a través del mismo gateway que a los proveedores de terceros. | Nada. INFRO no opera inferencia propia: enruta a cuentas que tienes con proveedores. Una carga de trabajo en Workers AI no tiene destino aquí. |
| Registrosdistinto | Prompts, respuestas, tokens, costo, duración y user agent, con un límite de almacenamiento por gateway. Cuando se alcanza el límite, los registros nuevos dejan de guardarse hasta que se borren los antiguos, o se active el borrado automático para descartar los más antiguos. | Metadatos de la solicitud (estado, modelo, proveedor, ruta, tokens, latencia, costo estimado) conservados durante 7, 14, 30 o 90 días según el plan. La captura de prompts y respuestas está desactivada por defecto y tiene su propia ventana, más corta. |
| Exportación a OpenTelemetrymisma forma | Spans a tu propio colector siguiendo las convenciones semánticas de GenAI, con gen_ai.usage.cost y cualquier metadato personalizado como atributos del span. | Spans enviados a tu propio colector desde la ruta de la solicitud, con el endpoint y los encabezados configurados en la consola. Incluido desde el plan Team. |
Nuestra lectura de la documentación publicada de Cloudflare, no una prueba ni un benchmark. Su producto cambia rápido (los límites de gasto llegaron en junio de 2026 y User Insights en agosto), así que verifica cualquier fila que decida algo por ti contra su registro de cambios y no contra esta página. Cada fuente y la fecha en que la abrimos aparecen al pie.
Dos argumentos para la conexión, y el id del modelo conserva su forma. El trabajo está en los encabezados: algunos pasan a ser un campo del cuerpo, y los encabezados de reintento no tienen adónde ir, porque aquí los reintentos son una política de ruta y no algo que envía quien llama.
Antes · Cloudflare AI Gateway
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.CF_API_TOKEN,
baseURL:
`https://gateway.ai.cloudflare.com/v1/${process.env.CF_ACCOUNT_ID}` +
`/${process.env.CF_GATEWAY_ID}/compat`,
});
const completion = await client.chat.completions.create(
{
model: "anthropic/claude-opus-5",
messages,
},
{
headers: {
"cf-aig-metadata": JSON.stringify({
user_id: "user_8f21",
feature: "summarizer",
}),
"cf-aig-max-attempts": "3",
},
},
);Después · INFRO
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.INFRO_API_KEY,
baseURL: "https://api.infro.io/v1",
});
const completion = await client.chat.completions.create({
// The model id keeps its shape: vendor, slash, model.
model: "anthropic/claude-opus-5",
messages,
// Annotations move out of headers and into the body. Recorded on the
// request, never forwarded upstream, and ignored by any OpenAI-compatible
// backend that does not know the field — so the same call still runs
// elsewhere.
metadata: {
user_id: "user_8f21",
tags: { feature: "summarizer" },
},
});
// Retries and failover are not here. They are route policy, set once in the
// console, so cf-aig-max-attempts has nothing to become.La URL base y la clave
https://api.infro.io/v1, con una clave de gateway de INFRO en el encabezado estándar Authorization: Bearer; es decir, los argumentos baseURL y apiKey que tu cliente ya tiene. El id de cuenta y el id de gateway de la URL de Cloudflare no tienen equivalente: una clave de INFRO ya identifica la organización, el proyecto y el entorno a los que pertenece.
El id del modelo no cambia de forma
Ambos direccionan los modelos como fabricante, barra, modelo. Los ids en sí aún hay que comprobarlos: GET /v1/models lista exactamente lo que tu clave puede llamar, que es lo que sirvan tus propias cuentas conectadas, y un modelo que ninguna conexión cubre devuelve 503 no_provider_connected indicando el proveedor que hay que conectar, en lugar de fallar de forma vaga.
Los encabezados desaparecen
cf-aig-metadata pasa a ser el objeto metadata del cuerpo: user_id, session_id y cualquier otra cosa bajo tags. cf-aig-max-attempts, cf-aig-retry-delay y cf-aig-backoff no tienen en qué convertirse, porque los reintentos y el failover se configuran en la ruta y no se envían por solicitud. cf-aig-custom-cost pasa a la consola una sola vez, y cf-aig-byok-alias se reemplaza por el entorno de la clave.
El cambio no tiene que ser un corte de golpe. Ambos gateways son endpoints HTTPS normales a los que puede apuntar un cliente compatible con OpenAI, así que un servicio puede funcionar aquí mientras todo lo demás sigue donde está, y los dos registros de solicitudes se pueden leer lado a lado durante una semana. Así también se comprueba la parte de esta página en la que menos deberías confiar (si los dos productos coinciden en lo que costó una solicitud), y vale la pena hacerlo antes de la decisión y no después.
Cuatro cosas, y la lista es corta a propósito. Los límites de gasto, la atribución por identidad, las tarifas personalizadas y la exportación a OpenTelemetry también son de Cloudflare: esto es lo que queda después de la coincidencia.
- La estimación se contrasta con la facturación del propio proveedor
- La documentación de límites de gasto de Cloudflare dice que el seguimiento de costos es una estimación de mejor esfuerzo a partir de recuentos de tokens y precios de modelos, y que, para los importes exactos de facturación, hay que consultar el panel de tu proveedor. Es una descripción exacta de lo que un gateway sabe por sí solo, y la cifra por solicitud de INFRO es una estimación en idénticos términos. Lo que difiere es el paso siguiente: un proceso diario lee las APIs de costos de tu propio OpenAI y Anthropic con una credencial de administrador independiente que concedes de forma deliberada, guarda la cifra informada junto a la estimación e informa de la variación. Dos proveedores, en el plan Business: un proveedor sin adaptador no muestra variación en lugar de una variación de cero, el endpoint de Anthropic excluye Priority Tier, y Bedrock, Vertex y Azure mantienen su costo en la facturación de la nube que los rodea.
- Tus tarifas negociadas viven en el plano de control, no en un encabezado
- Ambos productos pueden poner precio con las tarifas que realmente recogen tus contratos. En Cloudflare viajan en cada solicitud en
cf-aig-custom-cost, lo que significa que cada servicio que llama a un modelo tiene una copia de tus condiciones comerciales y una renegociación es un despliegue en todos ellos. Aquí se introducen una sola vez, por modelo y, de forma opcional, por proveedor, por quien sea responsable del contrato, yusage.price_sourceen cada solicitud indica si la cifra salió de tu tarifa, de tu tarifa para ese proveedor o de la tarifa publicada por el fabricante. Incluido desde el plan Team. - La unidad es una organización, no un gateway
- Un gateway de Cloudflare lo configura quien tenga el rol de la cuenta de Cloudflare, y la identidad por solicitud llega como metadatos personalizados o desde Access. INFRO tiene organizaciones, proyectos, entornos y claves con su propio ámbito, cinco roles, listas de modelos permitidos a nivel de organización, proyecto y clave, y un registro de auditoría de quién cambió qué política y cuándo, todo ello en el plan de entrada. Importa en el punto en que varios equipos comparten proveedores y la pregunta pasa a ser qué equipo puede llamar a este modelo y quién lo aprobó. El SSO de directorio y SCIM se incluyen desde el plan Business.
- Un render largo es un trabajo, no una solicitud mantenida abierta
- La generación de video se envía con
POST /v1/videosy devuelve un trabajo que lees conGET /v1/jobs/{id}o recibes en un webhook firmado, y el medio terminado se vuelve a alojar tras una URL firmada que caduca, de modo que sobrevive a la ventana de retención del propio proveedor. Se mide y se atribuye exactamente igual que un chat completion, que es lo que importa en un producto con muchos medios: el gasto más difícil de ver suele ser el que no tiene forma de token.
Lo que no se traslada
No hay importador, y el último punto de esta lista es el que decide los calendarios. Léelo antes de comprometerte con una fecha.
- Tus registros. No hay importador ni está previsto. Exporta lo que necesites del gateway antes de dejar de enviarle tráfico, y recuerda que su registro es un tope de almacenamiento y no una ventana de tiempo, así que lo que hay puede ser ya más corto de lo que crees.
- Respuestas en caché. Las entradas de la caché de otro producto no se trasladan; la caché de INFRO empieza vacía y se llena con tu propio tráfico, y solo coincide con solicitudes exactas, nunca con similares.
- Políticas de guardrails por categoría de seguridad. No tienen dónde aterrizar: los guardrails de INFRO buscan patrones (PII, secretos y tus propios términos) y no clasifican nada.
- Modelos de Workers AI. INFRO enruta a cuentas de proveedor que tienes y no opera inferencia, así que una carga de trabajo en los modelos propios de Cloudflare no tiene destino.
- Grafos de rutas dinámicas. Los destinos por prioridad y ponderados trasladan una cadena de respaldo, pero las ramas condicionales y las divisiones porcentuales no: hay que reconstruirlas en tu aplicación o dejarlas atrás.
- Unified Billing. Si Cloudflare compra hoy tu inferencia, primero necesitas tus propias cuentas con cada proveedor. Es un paso comercial con su propio plazo, no un cambio de configuración, y es lo único de esta lista que puede retrasar una migración durante semanas.
Si la cifra de costo tiene un público
Ese es el caso para el que está hecho este producto, y es el único de esta página que la propia documentación de Cloudflare no responde ya. El contrato de la API está publicado completo, incluidas las partes que todavía no existen, para que puedas decidir antes de escribir nada. O cuéntanos qué estás ejecutando: si la respuesta es que deberías quedarte con el gateway que tienes, esa es la respuesta que recibirás.
Fuentes
Cada afirmación de esta página sobre Cloudflare proviene de una de estas fuentes, con la fecha en que la leímos. Nada se deduce de una prueba, un benchmark o una conversación, y donde una página no aclaraba algo, la guía lo dice en lugar de adivinar.
- Cloudflare AI Gateway — Pricingleído el 20 sept 2026
- Cloudflare AI Gateway — Spend limitsleído el 20 sept 2026
- Cloudflare AI Gateway — Unified Billingleído el 20 sept 2026
- Cloudflare AI Gateway — Dynamic routingleído el 20 sept 2026
- Cloudflare AI Gateway — Bring your own keysleído el 20 sept 2026
- Cloudflare AI Gateway — Custom costsleído el 20 sept 2026
- Cloudflare AI Gateway — Request handlingleído el 20 sept 2026
- Cloudflare AI Gateway — Loggingleído el 20 sept 2026
- Cloudflare AI Gateway — Custom metadataleído el 20 sept 2026
- Cloudflare AI Gateway — User Insightsleído el 20 sept 2026
- Cloudflare AI Gateway — OpenTelemetry integrationleído el 20 sept 2026
- Cloudflare AI Gateway — OpenAI-compatible chat completionsleído el 20 sept 2026
- Cloudflare AI Gateway — Supported providersleído el 20 sept 2026
- Cloudflare AI Gateway — Guardrailsleído el 20 sept 2026
- Cloudflare AI Gateway — Data loss preventionleído el 20 sept 2026
- Cloudflare changelog — Control AI costs with spend limitsleído el 20 sept 2026
- Cloudflare changelog — User Insightsleído el 20 sept 2026