Volver al inicio
API v1

API para Desarrolladores

Integra tu tienda Pidefy con sistemas externos: ERP, inventario, apps móviles y más.

Base URL: https://pidefy.com/api/v1


Autenticación

La API soporta dos métodos. Usa el que mejor se adapte a tu integración.

1. JWT Token

Recomendado para sesiones cortas. El token expira en 24 horas.

Obtén un token con tus credenciales de Pidefy:

bash
curl -X POST https://pidefy.com/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{
    "email": "tu@email.com",
    "password": "tu-password"
  }'

Respuesta:

json
{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "expiresAt": "2026-03-13T19:00:00.000Z",
    "tenant": {
      "id": "abc123",
      "name": "Mi Tienda",
      "slug": "mi-tienda"
    }
  },
  "meta": null,
  "error": null
}

Luego usa el token en tus peticiones:

bash
curl https://pidefy.com/api/v1/products \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

2. API Key

Recomendado para integraciones permanentes. Crea una key desde el dashboard en Llaves de API. Solo se muestra una vez.

bash
curl https://pidefy.com/api/v1/products \
  -H "X-Api-Key: pk_live_abc123..."

Scopes disponibles:

ScopeDescripción
products:readLeer productos
products:writeCrear, editar y eliminar productos

Formato de respuesta

Todas las respuestas siguen la misma estructura:

Respuesta exitosa:

json
{
  "data": { ... },
  "meta": { "total": 50, "page": 1, "totalPages": 5 },
  "error": null
}

Respuesta con error:

json
{
  "data": null,
  "meta": null,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Fields name, price, purchasePrice, and stock are required"
  }
}

Códigos de error

CódigoHTTPDescripción
UNAUTHORIZED401Token o API Key inválido o ausente
FORBIDDEN403Scopes insuficientes para esta operación
NOT_FOUND404Recurso no encontrado
VALIDATION_ERROR400Datos inválidos en el request
TENANT_NOT_FOUND404Tienda no encontrada
INVALID_CREDENTIALS401Email o contraseña incorrectos
NO_TENANT404No hay tienda asociada a esta cuenta

Productos

GET/api/v1/products

Lista los productos de tu tienda con paginación y filtros.

Scope requerido: products:read

Parámetros de query:

ParámetroTipoDescripción
pagenumber (default: 1)Número de página
limitnumber (default: 50)Resultados por página (máx. 100)
searchstringBuscar por nombre de producto
categoryIdstringFiltrar por categoría (incluye subcategorías)
tagstringFiltrar por tag

Ejemplo:

bash
curl "https://pidefy.com/api/v1/products?page=1&limit=10&search=camisa" \
  -H "Authorization: Bearer TOKEN"

Respuesta:

json
{
  "data": [
    {
      "_id": "abc123",
      "name": "Camisa Negra",
      "price": 25.00,
      "purchasePrice": 12.00,
      "stock": 50,
      "tags": ["camisa", "negro"],
      "image": "/uploads/camisa.jpg",
      "isActive": true,
      "categoryId": "cat456",
      "createdAt": "2026-03-01T10:00:00.000Z"
    }
  ],
  "meta": { "total": 45, "page": 1, "totalPages": 5 },
  "error": null
}
GET/api/v1/products/:id

Obtiene un producto por su ID.

Scope requerido: products:read

bash
curl https://pidefy.com/api/v1/products/abc123 \
  -H "Authorization: Bearer TOKEN"
POST/api/v1/products

Crea un nuevo producto. Si tu tienda tiene sucursales, el stock se inicializa automáticamente en todas.

Scope requerido: products:write

Body (JSON):

ParámetroTipoDescripción
namerequeridostringNombre del producto
pricerequeridonumberPrecio de venta
purchasePricerequeridonumberPrecio de compra
stockrequeridonumberCantidad en inventario
descriptionstringDescripción del producto
imagestringURL de la imagen
categoryIdstringID de la categoría
brandIdstringID de la marca
tagsstring[]Tags del producto
isActiveboolean (default: true)Visible en la tienda
sizesstring[]Tallas disponibles
colorsstring[]Colores disponibles

Ejemplo:

bash
curl -X POST https://pidefy.com/api/v1/products \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Franela Básica",
    "price": 15.00,
    "purchasePrice": 7.00,
    "stock": 100,
    "tags": ["franela", "básico"],
    "sizes": ["S", "M", "L", "XL"]
  }'
PUT/api/v1/products/:id

Actualiza un producto. Envía solo los campos que quieres modificar.

Scope requerido: products:write

bash
curl -X PUT https://pidefy.com/api/v1/products/abc123 \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 18.00,
    "stock": 75
  }'
DELETE/api/v1/products/:id

Elimina un producto y todo su stock de sucursales.

Scope requerido: products:write

bash
curl -X DELETE https://pidefy.com/api/v1/products/abc123 \
  -H "Authorization: Bearer TOKEN"

Respuesta:

json
{
  "data": { "deleted": true },
  "meta": null,
  "error": null
}

Ejemplo completo

Flujo completo: autenticar, listar, crear, actualizar y eliminar un producto.

bash
# 1. Obtener token
TOKEN=$(curl -s -X POST https://pidefy.com/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"email": "tu@email.com", "password": "tu-password"}' \
  | jq -r '.data.token')

# 2. Listar productos
curl -s https://pidefy.com/api/v1/products \
  -H "Authorization: Bearer $TOKEN" | jq

# 3. Crear producto
curl -s -X POST https://pidefy.com/api/v1/products \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Producto Nuevo",
    "price": 20.00,
    "purchasePrice": 10.00,
    "stock": 50
  }' | jq

# 4. Actualizar precio
curl -s -X PUT https://pidefy.com/api/v1/products/PRODUCT_ID \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"price": 25.00}' | jq

# 5. Eliminar producto
curl -s -X DELETE https://pidefy.com/api/v1/products/PRODUCT_ID \
  -H "Authorization: Bearer $TOKEN" | jq
© 2026 Pidefy. Todos los derechos reservados.