---
name: classify_api_error
kind: function
lang: py
domain: core
version: "1.0.0"
purity: pure
signature: "def classify_api_error(error: Exception) -> str"
description: "Clasifica un error de API como permanente (no reintentar), transitorio (reintentar) o desconocido. Permanente tiene prioridad sobre transitorio."
tags: [retry, error, classification, api, backoff]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: error
    desc: "excepcion de Python (Exception o subclase) a clasificar"
output: "string: 'permanent' (no reintentar), 'transient' (reintentar), o 'unknown'"
tested: true
tests: ["error 429 es transitorio", "error 401 es permanente", "error timeout es transitorio", "error desconocido retorna unknown", "error con __cause__ transitorio"]
test_file_path: "python/functions/core/classify_api_error_test.py"
file_path: "python/functions/core/classify_api_error.py"
---

## Ejemplo

```python
err = Exception("HTTP 429 TooManyRequests")
classify_api_error(err)  # "transient"

err = Exception("HTTP 401 Unauthorized")
classify_api_error(err)  # "permanent"

err = Exception("Connection timeout")
classify_api_error(err)  # "transient"

err = Exception("Something unexpected happened")
classify_api_error(err)  # "unknown"
```

## Notas

Funcion pura: solo inspecciona el texto del error y su causa directa (`__cause__`). No tiene I/O ni dependencias externas. La prioridad permanente > transitorio evita reintentar errores 400/401/403 que nunca tendran exito.
