---
title: Codigos de error — causas y soluciones
section: webservice
slug: error-codes
description: "Referencia de codigos de error HTTP de la API REST de PrestaShop: 400, 401, 403, 404, 405, 500 con causas y soluciones."
keywords: prestashop webservice error 400 401 403 404 405 500 HTTP codigos solucion API
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/webservice/error-codes"
---

# Codigos de error — causas y soluciones

> Referencia de codigos de error HTTP de la API REST de PrestaShop: 400, 401, 403, 404, 405, 500 con causas y soluciones.

La API REST de PrestaShop devuelve codigos de estado HTTP estandar. Los errores incluyen un mensaje XML con detalles adicionales sobre la causa del error.

## Tabla de codigos de error

| Codigo | Estado | Causa mas comun |
| --- | --- | --- |
| 200 | OK | Operacion exitosa |
| 201 | Created | POST exitoso — nuevo recurso creado |
| 400 | Bad Request | XML/JSON malformado, campo requerido faltante o valor invalido |
| 401 | Unauthorized | API Key incorrecta, inexistente o WebService desactivado |
| 403 | Forbidden | API Key valida pero sin permisos para el recurso o metodo |
| 404 | Not Found | Recurso con ese ID no existe, o endpoint incorrecto |
| 405 | Method Not Allowed | Intentar POST en un recurso que solo permite GET |
| 500 | Internal Server Error | Error en el servidor — revisar logs de PrestaShop |
| 503 | Service Unavailable | Tienda en modo mantenimiento |

## 401 — Autenticacion fallida

| Causa | Solucion |
| --- | --- |
| WebService desactivado en el BO | Ir a Parametros Avanzados → WebService → Activar |
| API Key incorrecta o espacios extra | Verificar la clave en el BO y que no tenga espacios |
| API Key desactivada | Ir al BO y activar la clave |
| HTTPS requerido pero usas HTTP | Usar HTTPS para las peticiones (obligatorio en muchos servidores |
| Servidor con mod_rewrite mal conf. | Verificar el .htaccess y que mod_rewrite este activo |

## 403 — Sin permisos

*Diagnosticar y resolver error 403*

```bash
# ── Causa: la clave no tiene permiso para el recurso/metodo ──
# Solucion: ir al BO → WebService → Editar clave → Permisos
# Activar el check de GET/POST/PUT/DELETE para el recurso afectado

# ── Causa: intentar acceder a un recurso que no existe en tu PS ──
curl -u "KEY:" "https://t.com/api"
# Lista todos los recursos disponibles y los permisos de tu clave

# ── Respuesta tipica de error 403 en XML ──
# <prestashop>
#   <errors>
#     <error>
#       <code>403</code>
#       <message>This call to the Web Services API has not been authorized.</message>
#     </error>
#   </errors>
# </prestashop>
```

## 404 — Recurso no encontrado

| Causa | Solucion |
| --- | --- |
| ID de recurso que no existe | Verificar que el ID existe en la BD |
| Endpoint incorrecto | Verificar el nombre del recurso (plural: products, orders...) |
| URL mal formada | Comprobar que la URL base sea correcta |
| mod_rewrite no activo | El .htaccess de PS requiere mod_rewrite en Apache |
| BASE_URL incorrecta | Si la tienda no esta en la raiz, ajustar la URL |

## 500 — Error del servidor

*Diagnosticar errores 500*

```bash
# ── Error 500 en el WS — siempre revisar los logs ──

# Logs de PrestaShop
cat /path/to/prestashop/var/logs/dev.log
cat /path/to/prestashop/var/logs/prod.log

# Logs de PHP
cat /var/log/php/error.log
cat /var/log/apache2/error.log

# Causas comunes de 500 en WS:
# - Campo requerido faltante en XML (revisar schema=synopsis)
# - FK invalida (id_manufacturer que no existe)
# - Valor fuera de rango (texto mas largo que el maximo)
# - Hook/modulo lanzando excepcion durante el proceso
# - Permisos de archivo incorrectos en uploads/

# Activar modo debug para mas detalles:
# En config/config.inc.php:
# define('_PS_MODE_DEV_', true);
```

## Manejo de errores en PHP

*Cliente PHP con manejo de errores robusto*

```php
<?php

function psApiRequest(string $method, string $apiKey, string $url, string $body = ''): array
{
    $ch = curl_init($url . '?output_format=JSON');
    $options = [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST  => $method,
        CURLOPT_USERPWD       => $apiKey . ':',
        CURLOPT_TIMEOUT       => 30,
    ];
    if ($body) {
        $options[CURLOPT_POSTFIELDS] = $body;
        $options[CURLOPT_HTTPHEADER] = ['Content-Type: application/xml'];
    }
    curl_setopt_array($ch, $options);

    $response = curl_exec($ch);
    $httpCode  = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curlError = curl_error($ch);
    curl_close($ch);

    if ($curlError) {
        throw new \RuntimeException('cURL Error: ' . $curlError);
    }

    $data = json_decode($response, true);

    if ($httpCode >= 400) {
        $message = $data['errors'][0]['message'] ?? $response;
        throw new \RuntimeException('HTTP ' . $httpCode . ': ' . $message);
    }

    return $data ?? [];
}

// ── Uso con try/catch ──
try {
    $result = psApiRequest('GET', $apiKey, 'https://t.com/api/products/999');
} catch (\RuntimeException $e) {
    if (str_contains($e->getMessage(), 'HTTP 404')) {
        echo 'Producto no encontrado';
    } elseif (str_contains($e->getMessage(), 'HTTP 401')) {
        echo 'API Key invalida';
    } else {
        throw $e; // Re-lanzar otros errores
    }
}
```


---

*Fuente: [https://ayudaprestashop.es/webservice/error-codes](https://ayudaprestashop.es/webservice/error-codes). Version Markdown generada automaticamente para consumo por LLMs.*
