# Puertos públicos y endpoints HTTPS
Un **endpoint** es la forma en que el exterior llega a tu Workload. Hay dos tipos y eliges según lo que ejecutes.

| | `https` | `port` |
|---|---|---|
| Para | una web o una API (WebSockets incluidos) | cualquier otra cosa: un servidor de juego, una base de datos, un protocolo propio |
| Dirección | un host gratuito de la plataforma, más tus propios dominios | una IP pública y un puerto público que asigna Zaroz |
| Protocolo | TCP con HTTP; el TLS lo gestionamos nosotros | `tcp`, `udp` o `tcp_udp` en un solo número |
| Coste | gratis | se factura por las horas que se mantiene (mira [Facturación](/es/units/billing)) |

## Endpoints HTTPS

Un endpoint HTTPS publica un puerto del contenedor. Tu app sirve HTTP plano en ese puerto y Zaroz termina el TLS con un certificado automático.

- El host gratuito tiene la forma `<label>.zone.<zone>.zaroz.cloud`. Puedes elegir el `label`.
- Puedes asociar tus propios dominios. Cada uno debe ser un dominio que tu organización haya verificado, o un subdominio de uno. Un dominio que pierde la verificación deja de servirse.
- La petición se reparte entre todas tus unidades listas.
- Es todo o nada: si se rechaza un dominio, no se abre nada.

## Puertos públicos

Un puerto público asigna un puerto **dentro** de tu contenedor (`internal_port`) a una dirección y un puerto públicos que asigna Zaroz. La dirección y el número asignados vuelven en la respuesta.

- `tcp_udp` es un endpoint y un precio, con ambos protocolos sobre un mismo número público.
- Un puerto público va a **una unidad**, no a todas. Es una línea directa a un único pod. Si ejecutas varias unidades y cada una necesita su propia dirección pública, cada una recibe la suya.
- Cerrar un puerto detiene su facturación desde ese momento. No se pagó nada por adelantado, así que no hay nada que reembolsar.
- Un puerto cerrado sigue en la lista, con su última dirección, para poder leer la factura de un mes contra él.

### Puertos gratuitos y puertos extra

Un plan puede incluir algunos puertos gratuitos. El plan de un Workload no incluye ninguno, así que todo puerto raw se factura. Los endpoints HTTPS son siempre gratuitos.

## Puertos pendientes

Un puerto que pides al comprar queda `pending` hasta que el servicio esté en marcha. No se factura nada mientras está pendiente, y `pending_reason` dice por qué aún no se ha abierto. Puedes retirar una solicitud pendiente igual que cierras un puerto abierto.

## Rechazos

Cuando se rechaza una petición, el campo `details` empieza con un código de motivo antes de los dos puntos:

| código | significado |
|---|---|
| `not_ready` | el servicio aún no está en marcha |
| `port_limit` | se usan todos los puertos del plan |
| `port_in_use` | ese puerto del contenedor ya está abierto con ese protocolo, o ya tiene un endpoint HTTPS |
| `no_address_available`, `no_port_available` | ahora mismo no queda nada libre; inténtalo más tarde |
| `internal_port_out_of_range` | el puerto no está entre 1 y 65535 |
| `protocol_required`, `unknown_protocol` | un `port` necesita `tcp`, `udp` o `tcp_udp` |
| `invalid_host_label`, `host_taken`, `https_limit` | no se permite la etiqueta HTTPS o su cantidad |
| `invalid_domain`, `platform_domain`, `domain_taken`, `domain_not_verified`, `domain_limit` | no se aceptó un dominio propio |

El paso a paso está en [Añade un puerto público](/es/guides/containers-public-port).

:::note{title="Estado de la API"}
Las rutas de endpoints las usa la consola y están marcadas como solo consola en la referencia de la API. Aceptan tu token de sesión o un token de acceso personal, y rechazan los tokens de aplicación.
:::
