DESARROLLADORES · Referencia de API de integración

Referencia de la API Fabrixa Integration

6 min de lectura Última actualización: 10-06-2026 15:28

La API Integration te ayuda a crear y gestionar pedidos de Fabrixa, iniciar Fabrixa Studio y mantener sincronizado el estado de producción y fulfillment mediante webhooks. La API sigue convenciones REST y usa JSON para todos los cuerpos de solicitud y respuesta.

URL BÁSICA

https://api.fabrixa.com/v2/integration

Envía todas las solicitudes a esta URL base seguida del endpoint path específico. La URL base es el punto de partida para interactuar con la Fabrixa API: obtener, crear, actualizar o eliminar recursos.

ANTES DE TU PRIMERA SOLICITUD

Autenticación

Para acceder a la API Integration, autentica las solicitudes usando un Application Access Token y una Application Key:

Encabezado de autorización
Authorization: Bearer APPLICATION_ACCESS_TOKEN
Encabezado de clave de aplicación
X-Application-Key: APPLICATION_KEY
Ejemplo de comando cURL
curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/ping' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Reemplace APPLICATION_ACCESS_TOKEN con su token de acceso real y APPLICATION_KEY con su clave de aplicación real.

CÓMO SE ESTRUCTURAN LAS RESPUESTAS

Puntos finales y solicitudes

Los endpoints de la API Integration están organizados por tipo de recurso y siguen el estilo REST. Cada endpoint representa un recurso y las acciones se realizan con métodos HTTP estándar.

Todas las solicitudes y respuestas de la API Integration usan JSON, proporcionando una interfaz consistente y fácil de usar.

Para obtener detalles completos sobre cada punto final, incluidos ejemplos de solicitudes y respuestas, consulte nuestro Swagger documentation.

Formato de respuesta

Todos los puntos finales devuelven datos en un formato estandarizado con estos objetos:

{
  "links": {
    "self": "https://api.fabrixa.com/v2/integration/products",
    "first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
    "last_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "next_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "prev_page": null
  },
  "meta": {
    "total": 2,
    "current_page": 1,
    "per_page": 10
  },
  "data": [
    {
      "id": 1,
      "name": "Product 1",
      "description": "Description of Product 1"
    },
    {
      "id": 2,
      "name": "Product 2",
      "description": "Description of Product 2"
    }
  ]
}

Descripción de los objetos de respuesta

links

Contiene enlaces de paginación para navegar por los resultados.

  • self — la URL de la página actual.
  • first_page — la URL de la primera página de resultados.
  • last_page — la URL de la última página de resultados.
  • next_page — la URL de la página siguiente. null si no hay página siguiente.
  • prev_page — la URL de la página anterior. null si no hay una página anterior.

meta

Contiene metadatos sobre la respuesta, como información de paginación.

  • total — el número total de elementos disponibles en todas las páginas.
  • current_page — el número de página actual de los resultados.
  • per_page — el número de elementos por página.

data

El contenido principal de la respuesta. data varía según el punto final: puede ser un único objeto, por ejemplo, un producto, o una serie de objetos, por ejemplo, una lista de productos.

CUANDO ALGO VA MAL

Errores y códigos de estado

Todas las solicitudes de API devuelven códigos de estado HTTP que brindan información sobre la respuesta.

400 Bad Request

El servidor no puede procesar la solicitud debido a errores de validación: parámetros faltantes o no válidos.

401 Unauthorized

El cliente no ha proporcionado credenciales de autenticación válidas. También se devuelve cuando se revoca el token de acceso.

403 Forbidden

El servidor denegó la solicitud debido a derechos de acceso insuficientes, generalmente causados ​​por permisos de acceso incorrectos o faltantes.

404 Not Found

El recurso solicitado no se pudo encontrar en el servidor.

429 Too Many Requests

El cliente ha excedido el número permitido de solicitudes en un período de tiempo determinado. Ver Rate Limits.

5xx Errors

Se produjo un error interno del servidor. Comuníquese con el soporte de Fabrixa con los detalles de la solicitud fallida.

Cuerpo de respuesta de error

Un ejemplo de un cuerpo de respuesta de error:

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/ping"
    },
    "meta": [],
    "errors": {
        "messages": [
            "Application Key is not specified."
        ]
    }
}

errors contiene detalles sobre lo que falló. La matriz messages enumera descripciones de errores. Para una solicitud incorrecta, recibirá los nombres de los campos que no superaron la validación.

CONOCE LOS LÍMITES DE TU SOLICITUD

Límites de solicitudes

La API de integración admite un límite de 30 solicitudes por aplicación por minuto.

Si supera este límite recibirá una respuesta 429 Too Many Requests.

Todas las respuestas de la API de integración incluyen el encabezado X-RateLimit-Remaining, cuántas solicitudes aún puede realizar el cliente, y el encabezado X-RateLimit-Limit, el total permitido por minuto.

CREAR Y SEGUIR PEDIDOS

Órdenes

Crea pedidos en Fabrixa desde tu tienda o plataforma, adjunta los archivos de impresión requeridos y sigue cada artículo durante el fulfillment.

PREPARA LOS DATOS DE TU PEDIDO

Crear un pedido

Para crear un pedido mediante la Fabrixa Integration API, envía una solicitud POST a https://api.fabrixa.com/v2/integration/orders. El request body debe incluir:

Solicitar estructura corporal

  • number (opcional): el número de pedido. Si no se proporciona, se genera un número único.
  • comments (opcional): cualquier comentario o nota adicional relacionada con el pedido.
  • purchased_at: fecha y hora en que se compró el pedido, con el formato YYYY-MM-DD HH:MM:SS.
  • client_ip (opcional): la dirección IP del cliente.
  • client_user_agent (opcional): cadena de agente de usuario del cliente.
  • rows: conjunto de artículos del pedido, cada uno de los cuales contiene:
    • sku: el SKU de la variante del producto. Consulte Swagger para obtener más detalles.
    • quantity: cantidad de la variante del producto solicitada.
    • client_barcode (opcional): identificador único del lado del cliente por línea de pedido, formateado como Code 128.
    • cart_item_key (obligatorio sin sources): identificador único de la integración de la plataforma Fabrixa Studio, utilizado para asociar personalizaciones guardadas con el pedido.
    • sources (obligatorio sin cart_item_key): conjunto de archivos de origen asociados con el producto, cada uno de los cuales contiene:
      • type: el tipo de producto; use "file" de forma predeterminada.
      • url: URL de la fuente archivo.
  • customer - detalles del cliente:
    • first_name, last_name, email, phone.
  • shipping_address - detalles de envío:
    • address, address2 (opcional), address3 (opcional).
    • city, country_code (ISO 3166-2), country, postal_code, state (opcional).
    • first_name, last_name, phone (opcional), company (opcional).
  • shipping_label (opcional) - detalles de la etiqueta:
    • method_name - p.e. "Publicar NL".
    • tracking_number, tracking_url, label_pdf_url.
    • date_created - formateado como YYYY-MM-DD HH:MM:SS.

Solicitud de muestra

{
  "number": "NL2024010201",
  "comments": "Customer agrees with a low resolution file.",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "variant_id": 2705,
      "quantity": 1,
      "client_barcode": "1234567890",
      "sources": [
        {
          "type": "file",
          "url": "https://samples-files.com/samples/sample.pdf"
        }
      ]
    }
  ],
  "customer": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "3VJtP@example.com",
    "phone": "0647185332"
  },
  "shipping_address": {
    "address": "Pierre cuypershof",
    "address2": "17",
    "city": "Amsterdam",
    "country_code": "NL",
    "country": "Netherlands",
    "postal_code": "1012 AB",
    "state": "North Holland",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "0647185332"
  },
  "shipping_label": {
    "method_name": "Post NL",
    "tracking_number": "3SYZXG1585577",
    "tracking_url": "https://postnl.nl/tracktrace/3SYZXG1585577",
    "label_pdf_url": "https://api.fabrixa.com/storage/8966630826422f36d822f91680012141.pdf",
    "date_created": "2024-01-01 00:00:00"
  }
}
SEGUIMIENTO DE ARTÍCULOS DE SU PEDIDO

Seguir fulfillment

Para obtener el estado de fulfillment de un pedido específico, envía una solicitud GET a https://api.fabrixa.com/v2/integration/orders/{order_id}/fulfillments. La respuesta proporciona los fulfillments asociados al pedido, incluyendo estado de cada artículo, detalles del producto y progreso de producción.

Respuesta de muestra

{
    "data": [
        {
            "id": 1499,
            "barcode": "1200004169200",
            "status": "unfulfilled",
            "created_at": "2024-08-19T12:38:59.000000Z",
            "updated_at": "2024-08-19T12:39:00.000000Z",
            "variant": {
                "id": 32327,
                "name": "Test iAPI blanket product",
                "subtitle": "100 x 150 cm",
                "SKU": "COF099191"
            },
            "product": {
                "id": 1306,
                "name": "Test iAPI blanket product",
                "subtitle": "Test iAPI blanket product"
            },
            "production_steps": [
                {
                    "id": 5,
                    "name": "Print duvet",
                    "description": "Printing the duvet according to the specified design and dimensions.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                },
                {
                    "id": 6,
                    "name": "Print pillow",
                    "description": "Printing the pillow cover with the assigned design.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                }
            ]
        }
    ]
}

La respuesta incluye una lista de cumplimientos, cada uno de los cuales proporciona:

  • id - identificador único para el cumplimiento.
  • barcode - código de barras para seguimiento e identificación internos; también se puede imprimir en el producto.
  • status: el estado de cumplimiento actual: no cumplido o cumplido.
  • created_at y updated_at: marcas de tiempo para la creación del cumplimiento y la última actualización.
  • variant: información detallada sobre la variante del producto: nombre, subtítulo, SKU.
  • product - detalles del producto: nombre, subtítulo.
  • production_steps - variedad de pasos de producción. La lista de pasos depende del tipo de producto. Para cada paso:
    • id - identificador único para el paso de producción.
    • name - p.e. "Imprimir edredón".
    • description: lo que implica el paso de producción.
    • status: estado actual:
      • pendiente: aún no iniciado.
      • en progreso: actualmente en curso.
      • rechazado: el paso encontró un problema y no se completó correctamente.
      • hecho - el paso se ha completado.
    • notes - cualquier nota adicional relacionada con el paso.
    • updated_at - la última vez que se actualizó el estado del paso.

Cada registro de cumplimiento corresponde a un producto específico o variante de producto dentro del pedido, y cada copia del producto en el pedido tiene su propio registro de cumplimiento: cada artículo se rastrea individualmente durante toda la producción.

Si no se devuelve ningún cumplimiento para un pedido, el pedido aún no ha entrado en la etapa de procesamiento.

CÓMO PROPORCIONAR ARCHIVOS DE IMPRESIÓN

Requisitos de archivos fuente

Al incluir source files en el pedido, asegúrate de que cumplen los siguientes requisitos:

type

Debe proporcionar un archivo PDF como fuente. Si su diseño contiene varias capas de productos, incluya cada capa como una página separada en el mismo PDF. Durante el procesamiento, cada página se trata como una capa individual, lo que le permite enviar un diseño de varias capas como un único archivo fuente. See PDF requirements and page order.

El type en el objeto de origen debe establecerse en "file".

"sources": [
    {
        "type": "file",
        "url": "https://samples-files.com/samples/source.pdf"
    }
]

Para obtener más detalles, consulte Swagger documentation.

url

El campo url debe contener un enlace directo al archivo fuente. Asegúrese de que la URL sea accesible y que el archivo se pueda descargar sin autenticación. El enlace debe permanecer accesible durante todo el proceso de producción.

Formato de archivo

Proporcione archivos en formato PDF. Asegúrese de que las imágenes sean de alta calidad y adecuadas para imprimir.

Dimensiones de la imagen

Las dimensiones máximas son 15,000 pixels en cada lado. Las imágenes que excedan este límite pueden cambiar de tamaño o rechazarse. La resolución de la imagen debe coincidir con las dimensiones del producto; de lo contrario, es posible cambiar el tamaño de las imágenes o recortarlas para que quepan.

Resolución

No hay requisitos de resolución específicos; solo asegúrese de que la calidad de la imagen sea suficiente para imprimir.

Espacio de color

Las imágenes deben estar en el espacio de color RGB para una representación del color precisa. Otros espacios de color se convertirán durante el procesamiento, lo que puede dar lugar a colores incorrectos.

Tamaño de archivo

Cada archivo fuente no debe exceder 50 MB. Los archivos más grandes pueden rechazarse o provocar retrasos en el procesamiento.

Requisitos PDF y orden de páginas

El orden de las páginas del PDF es importante. Las páginas se relacionan con las capas de productos por posición y el orden de páginas esperado depende del tipo de producto. Asegúrese de que las páginas de su PDF sigan la secuencia de capas correcta para el producto que está enviando.

ProductoOrden de páginas PDF
Duvet Cover
  1. Duvet cover
  2. Pillow front
  3. Pillow back
Curtains
  1. Left curtain
  2. Right curtain
T-shirt
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Tanktop
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Sweater
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Collar
  8. Waistband
Hoodie
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Hood inside left
  8. Hood inside right
  9. Hood outside left
  10. Hood outside right
  11. Waistband
  12. Pocket lower left
  13. Pocket lower right
  14. Pocket upper right
  15. Pocket upper left
Sweatpants
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Left cuff
  6. Right cuff
  7. Waistband
  8. Right pocket
  9. Left pocket
  10. Back pocket
  11. Back pocket interfacing
Sweatshorts
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Waistband
  6. Right pocket
  7. Left pocket

Importante: cada página PDF debe coincidir con las dimensiones requeridas para su capa de producto y estar orientada correctamente. Coloque la obra de arte de modo que la parte superior del diseño se alinee con la parte superior de la página. El tamaño u orientación de página incorrectos pueden causar problemas de escala, rotación o alineación en producción.

PERSONALIZACIÓN DEL PRODUCTO

Fabrixa Studio

Fabrixa Studio es una herramienta que permite a los usuarios personalizar y personalizar productos sin problemas en tiempo real con una interfaz intuitiva donde los usuarios pueden crear o cargar sus propios diseños.

Fabrixa Studio es ideal para empresas que ofrecen productos personalizados, ya que permite a los clientes visualizar sus diseños antes de finalizar los pedidos.

AÑADE ESTUDIO A TU TIENDA

Insertar Fabrixa Studio

Puedes incrustar Fabrixa Studio en tu sitio web usando un iframe. Esto permite a los clientes personalizar productos directamente en tu sitio durante el checkout.

Ejemplo de iframe para incrustar Fabrixa Studio:

<iframe id="fabrixa-studio"
    src="https://studio.fabrixa.com?application_key={application_key}&sku={product_sku}&cart_item_key={cart_item_key}"
    name="FabrixaStudio"
    scrolling="no"
    frameborder="1"
    width="100%"
    height="100%"
    allowfullscreen="">
</iframe>

Reemplace los valores de product_sku, cart_item_key y application_key con sus valores dinámicos.

Solicitud para crear un pedido con cart_item_key

{
  "number": "NL2024010201",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "sku": "SB796162",
      "quantity": 1,
      "cart_item_key": "0cb76770-de2d-4524-aa48-47b6e5f0d8a5"
    }
  ],
  "customer": {
    "...": "..."
  },
  "shipping_address": {
    "...": "..."
  },
  "shipping_label": {
    "...": "..."
  }
}
ESCUCHE LAS ACCIONES DE LOS CLIENTES

Manejar eventos de estudio

Cuando se hace clic en el botón Agregar al carrito dentro del iframe, se ejecuta el siguiente comando:

window.parent.postMessage('customizationFinished', '*');

De manera similar, cuando se hace clic en el botón Atrás:

window.parent.postMessage('closeButtonClicked', '*');

El método postMessage facilita la comunicación entre orígenes entre el iframe y su ventana principal, lo que le permite notificar al padre sobre acciones específicas del usuario.

El primer argumento de postMessage son los datos que desea enviar. La cadena 'customizationFinished' indica que el usuario ha finalizado la personalización y está agregando el producto al carrito. 'closeButtonClicked' indica que el usuario ha elegido regresar.

En la ventana principal, escuche estos mensajes usando el detector de eventos message:

window.addEventListener('message', function(event) {
    if (event.origin === 'https://studio.fabrixa.com') {
        if (event.data === 'customizationFinished') {
            // Handle the Add to Cart event
            console.log('Customization finished and item can be added to cart.');
        } else if (event.data === 'closeButtonClicked') {
            // Handle the Back button event
            console.log('Back button clicked.');
        }
    }
});

Siempre verifique el origin de los mensajes entrantes para asegurarse de que provengan de una fuente confiable. Dependiendo del mensaje recibido, realice las acciones necesarias: actualice la interfaz de usuario, procese el carrito, etc. Validar origin es crucial para la seguridad: evita que scripts no autorizados interactúen con su aplicación.

MUESTRA EL DISEÑO TERMINADO

Vista previa de personalización

Una vez completada la personalización, muestre el diseño final utilizando la URL de vista previa a continuación. Esta URL devuelve una imagen del producto personalizado, adecuada como valor src en una etiqueta <img>. Ideal para mostrar el producto personalizado en su carrito, resumen de pedido o en cualquier lugar de la interfaz de su tienda.

https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}

Reemplace {CART_ITEM_KEY} con la clave de artículo del carrito real y {APPLICATION_KEY} con su clave de aplicación válida.

Uso de ejemplo en una etiqueta de imagen:

<img
    src="https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}"
    alt="Customized Product Preview"
    style="max-width: 100%; height: auto;" />
PRUÉBALO CON TUS VALORES

Demostración en vivo

La vista previa de la personalización aparecerá aquí cuando el diseño esté terminado.

Customization preview
RECIBIR ACTUALIZACIONES DEL EVENTO

Ganchos web

Fabrixa utiliza webhooks para notificar a su sistema sobre eventos en tiempo real: actualizaciones de pedidos o creaciones. Cuando ocurre un evento, Fabrixa envía un webhook a su servidor que contiene la información relevante. Su servidor debe exponer un punto final POST público para manejar los webhooks entrantes.

REVISA TUS ENCABEZADOS ENTRANTES

Encabezados de solicitud de webhook

La solicitud webhook incluye los siguientes headers para ayudarte a identificar y validar la solicitud entrante:

{
  "content-type": "application/json",
  "x-webhook-signature": "YmEwNjBhMGMyMzE3ZWQ5NGQ5NDYwOGVhNzNhMjQ4M2MyODZkZmI3NTQ1YzYxYjdkMzNhZjgzYzBmMTkxYTAxMw==",
  "x-webhook-topic": "order.updated"
}
Desglose del encabezado
ELIGE LOS TEMAS DE TU EVENTO

Eventos de webhook

Los webhooks de Fabrixa notifican a tu sistema cambios en el estado del pedido o actividad. Cada webhook se activa mediante un valor específico de x-webhook-topic. Topics admitidos actualmente:

TemaDescripción
order.created Se activa cuando se realiza un nuevo pedido en Fabrixa, ya sea mediante solicitud de API o directamente en la plataforma.
order.updated Se activa cuando se actualizan los detalles del pedido, como el estado del pedido o el estado de cumplimiento.

Estados de pedido

Estados de cumplimiento

INSPECCIONA LA CARGA ÚTIL DE TU EVENTO

Ejemplo de carga útil de webhook

Un ejemplo de la carga útil enviada con el webhook. Esta carga útil representa una actualización de pedido:

{
  "id": 23069,
  "number": "1250211835",
  "comments": null,
  "is_archived": false,
  "status": "imported",
  "fulfillment_status": "unfulfilled",
  "purchased_at": "2025-04-17T16:17:21.000000Z",
  "created_at": "2025-04-17T16:17:23.000000Z",
  "updated_at": "2025-04-18T07:43:52.000000Z",
  "rows": [
    {
      "id": 27954,
      "quantity": 1,
      "client_barcode": "1250211835",
      "fulfillment_status": "unfulfilled",
      "variant": {
        "id": 293457,
        "name": "Sherpa fleece deken",
        "subtitle": "100x150",
        "SKU": "SFD787231",
        "product": {
          "id": 5319,
          "name": "Sherpa fleece deken",
          "subtitle": "Sherpa fleece deken"
        }
      },
      "sources": [
        {
          "type": "print",
          "url": "https://storage.googleapis.com/fabrixa-api/storage/99b10aaa-df4d-47e4-9bc9-b1d6a785df4c/orders/merchandise-sources/120002795400.pdf",
          "properties": {
            "fill_style": "contain"
          }
        }
      ]
    }
  ]
}
VERIFICA LA FUENTE DE TU WEBHOOK

Verificar firmas de webhooks

Para asegurar que la solicitud webhook es auténtica y no ha sido alterada, verifica el header x-webhook-signature. Recalcula la signature HMAC-SHA256 usando el raw request payload y tu secret key, y compárala con la signature recibida.

Ejemplo de PHP sin formato

$payload = file_get_contents('php://input');
$yourSecret = 'your-secret-key';
$expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
$receivedSignature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';

if (!hash_equals($expectedSignature, $receivedSignature)) {
    http_response_code(403);
    exit('Invalid signature');
}

Ejemplo de Laravel

public function handle(Request $request)
{
    $yourSecret = 'your-secret-key';
    $payload = $request->getContent();
    $expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
    $receivedSignature = $request->header('x-webhook-signature');

    if (!hash_equals($expectedSignature, $receivedSignature)) {
        abort(403, 'Invalid signature');
    }

    // Continue processing...
}

Reemplace $yourSecret con su clave secreta compartida. Utilice siempre hash_equals para comparar firmas y mitigar los ataques de sincronización.

¿Y SI FALLA LA ENTREGA?

Reintentos de webhook

Los webhooks se desactivan de forma predeterminada después de 10 intentos de entrega fallidos. Si su punto final devuelve un estado fallido como 404 o cualquier error de 5xx, el webhook lo volverá a intentar un total de 10 veces. Si continúa devolviendo un código de respuesta que no sea 2xx o 3xx, se desactivará. Las respuestas exitosas incluyen:

DEVOLVER UNA RESPUESTA CLARA

Respuesta de webhook

Recomendamos encarecidamente que su punto final devuelva un código de estado 200 OK lo más rápido posible para acusar recibo del webhook. Si bien cualquier respuesta 2xx o 3xx se considera exitosa, 200 es la más utilizada y confiable.

Para evitar tiempos de espera de entrega o reintentos, devuelva 200 OK inmediatamente y maneje el procesamiento de carga útil del webhook de forma asíncrona, por ejemplo, a través de un trabajo en segundo plano o una cola. Si su punto final tarda demasiado en responder, se puede considerar un error incluso si la respuesta finalmente es exitosa.

Las respuestas con códigos de estado en el rango 4xx o 5xx, o tiempos de espera, activarán reintentos según el mecanismo de reintento.