Errores
La API REST utiliza códigos de estado HTTP convencionales y una forma de error JSON consistente.
# Forma del error
Los puntos finales JSON devuelven:
{ "error": "templateId is required." }
(La URL de renderización firmada devuelve un cuerpo corto text/plain en su lugar, ya que sirve contenido binario en caso de éxito.)
# Códigos de estado
| Estado | Significado | Causa típica |
|---|---|---|
200 |
OK | Renderización/captura completada. |
202 |
Aceptado | Trabajo asincrónico puesto en cola — consulta GET /v1/renders/{id}. |
400 |
Solicitud incorrecta | Falta template, lote de más de 50 o una URL de captura no permitida. |
401 |
No autorizado | Clave API faltante, inválida o revocada. |
402 |
Pago requerido | Cuota del plan gratuito agotada — actualiza tu plan para continuar renderizando. |
403 |
Prohibido | Firma incorrecta o faltante en una URL de renderización firmada. |
404 |
No encontrado | Plantilla, trabajo o ruta desconocida. |
405 |
Método no permitido | Método HTTP incorrecto para el punto final. |
500 |
Error del servidor | Una falla inesperada (reintentar; contacte al soporte si persiste). |
# Cuotas
En el plan gratuito, las renderizaciones se detienen en tu límite mensual con 402. Los planes pagos nunca bloquean a mitad de renderización — el uso excesivo se mide y se factura (para que tus renderizaciones nunca se queden sin servicio). Verifica tu uso actual con GET /v1/account o la página de Uso en la aplicación.
# Manejo de errores
from mostlyrender import MostlyRender, MostlyRenderError
try:
out = mr.render("tpl_abc", modifications={"title": "Hello"})
except MostlyRenderError as e:
print(e.status, e.body) # e.g. 402 { "error": "…quota…" }
En un lote, los fallos por elemento no fallan la solicitud completa — cada elemento fallido es una entrada { "error": … } en results.