---
title: WebService API — Introduccion y autenticacion
section: webservice
slug: intro
description: "Introduccion a la API REST de PrestaShop: activar el WebService, crear claves API, autenticacion Basic Auth y primeras peticiones."
keywords: prestashop webservice API REST autenticacion API key Basic Auth activar configurar
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/webservice/intro"
---

# WebService API — Introduccion y autenticacion

> Introduccion a la API REST de PrestaShop: activar el WebService, crear claves API, autenticacion Basic Auth y primeras peticiones.

La API REST de PrestaShop permite acceder y modificar todos los recursos de la tienda de forma programatica. Soporta XML (por defecto) y JSON, y usa autenticacion Basic HTTP con una API Key.

## Activar el WebService en el BO

Por defecto, el WebService esta desactivado. Para activarlo: **Parametros Avanzados → WebService → Activar el WebService de PrestaShop: Si**.

## Crear una clave API

| Campo | Descripcion |
| --- | --- |
| Clave | 32 caracteres alfanumericos (se genera automaticamente) |
| Descripcion | Nombre descriptivo (ej: 'App movil', 'ERP integrador') |
| Estado | Activar o desactivar la clave sin eliminarla |
| Permisos | Seleccionar GET/POST/PUT/DELETE para cada recurso |

## Autenticacion Basic Auth

*Autenticacion con cURL — Basic Auth*

```bash
# La API Key va como usuario en Basic Auth, password vacio
# Metodo 1: -u flag
curl -u "TU_API_KEY:" "https://mitienda.com/api/products?output_format=JSON"

# Metodo 2: Header Authorization
curl -H "Authorization: Basic $(echo -n 'TU_API_KEY:' | base64)" \
     "https://mitienda.com/api/products?output_format=JSON"

# Metodo 3: Query string (menos recomendado, la clave queda en logs)
curl "https://mitienda.com/api/products?ws_key=TU_API_KEY&output_format=JSON"

# Verificar que el WebService esta activo:
curl -u "TU_API_KEY:" "https://mitienda.com/api"
# Respuesta: lista de recursos disponibles
```

## Primera peticion con cURL y PHP

*Cliente PHP basico para la API*

```php
<?php

class PrestaShopApiClient
{
    private string $apiUrl;
    private string $apiKey;

    public function __construct(string $shopUrl, string $apiKey)
    {
        $this->apiUrl = rtrim($shopUrl, '/') . '/api';
        $this->apiKey = $apiKey;
    }

    public function get(string $resource, array $params = []): array
    {
        $params['output_format'] = 'JSON';
        $url = $this->apiUrl . '/' . $resource . '?' . http_build_query($params);

        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_USERPWD       => $this->apiKey . ':',
            CURLOPT_SSL_VERIFYPEER=> false, // Solo en desarrollo
        ]);

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

        if ($httpCode !== 200) {
            throw new \RuntimeException('API Error ' . $httpCode . ': ' . $response);
        }

        return json_decode($response, true) ?? [];
    }
}

// ── Uso ──
$api = new PrestaShopApiClient('https://mitienda.com', 'TU_API_KEY');

// Obtener productos activos
$data = $api->get('products', [
    'filter[active]' => 1,
    'display'        => '[id,reference,price]',
    'limit'          => 10,
]);

foreach ($data['products'] as $product) {
    echo $product['id'] . ': ' . $product['reference'] . PHP_EOL;
}
```

## Formatos de respuesta

| Parametro | Valor | Descripcion |
| --- | --- | --- |
| output_format | JSON | Respuesta en formato JSON (recomendado) |
| output_format | XML | Respuesta en formato XML (por defecto) |
| schema | blank | Estructura vacia del recurso (para saber los campos) |
| schema | synopsis | Estructura con tipos y restricciones de cada campo |
| display | full | Todos los campos del recurso |
| display | [f1,f2] | Solo los campos especificados |


---

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