> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryprofound.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SDKs

> SDKs oficiales de Python y JavaScript para la API de Profound

## Descripción general

Profound ofrece SDKs oficiales para Python y JavaScript/TypeScript, que facilitan la integración de nuestra API en tus aplicaciones.

**Ventajas clave:**

* Interfaces con seguridad de tipos y compatibilidad completa con TypeScript
* Gestión automática de la autenticación
* Lógica de reintentos y manejo de errores integrados
* Ejemplos de código completos para cada endpoint
* Compatibilidad con async/await para aplicaciones modernas

<Note>
  Toda la documentación de los endpoints de la API incluye ejemplos de código tanto en Python como en JavaScript. Consulta la sección **Endpoints** en la pestaña REST API para ver ejemplos de operaciones específicas.
</Note>

## Instalación

<CodeGroup>
  ```bash Python theme={null}
  pip install profound
  ```

  ```bash JavaScript theme={null}
  npm install @profoundai/client
  # or
  yarn add @profoundai/client
  # or
  pnpm add @profoundai/client
  # or
  bun add @profoundai/client
  ```
</CodeGroup>

## Inicio rápido

### Python

```python theme={null}
from profound import Profound

client = Profound(
    api_key="your-api-key-here"  # or set PROFOUND_API_KEY env var
)

# Get organization categories
categories = client.organizations.categories.list()
print(categories)

# Generate a report
report = client.reports.visibility(
    category_id=categories[0]['id'],  
    start_date="2024-01-01",
    end_date="2024-01-31",
    dimensions=["asset_name"],
    metrics=["visibility_score"]
)
print(report)
```

### JavaScript/TypeScript

```typescript theme={null}
import Profound from '@profoundai/client';

const client = new Profound({
  apiKey: "your-api-key-here" // or set PROFOUND_API_KEY env var
});

// Get organization categories
const categories = await client.organizations.categories.list();
console.log(categories);

// Generate a report
const report = await client.reports.visibility({
  category_id: categories[0].id,
  start_date: "2024-01-01",
  end_date: "2024-01-31",
  dimensions: ["asset_name"],
  metrics: ["visibility_score"]
});
console.log(report);
```

## Autenticación

Ambos SDKs admiten varios métodos de autenticación:

1. **Variable de entorno** (recomendado): define `PROFOUND_API_KEY` en tu entorno
2. **Parámetro del constructor**: pasa `api_key` (Python) o `apiKey` (JavaScript) al inicializar el cliente

```bash theme={null}
# Set environment variable
export PROFOUND_API_KEY="your-api-key-here"
```

Para obtener más detalles sobre cómo conseguir una clave de API, consulta [Autenticación](/es/rest-api/authentication).

## Manejo de errores

### Python

```python theme={null}
from profound import Profound, APIError

client = Profound()

try:
    report = client.reports.visibility(
        category_id="invalid-id",
        start_date="2024-01-01",
        end_date="2024-01-31",
        dimensions=["asset_name"],
        metrics=["visibility_score"]
    )
except APIError as e:
    print(f"API Error: {e.status_code} - {e.message}")
```

### JavaScript/TypeScript

```typescript theme={null}
import Profound from '@profoundai/client';

const client = new Profound();

try {
  const report = await client.reports.visibility({
    category_id: 'invalid-id',
    start_date: '2024-01-01',
    end_date: '2024-01-31',
    dimensions: ['asset_name'],
    metrics: ['visibility_score']
  });
} catch (error) {
  if (error instanceof Profound.APIError) {
    console.error(`API Error: ${error.status} - ${error.message}`);
  }
}
```

## Límites de solicitudes

La API tiene un límite predeterminado de 600 solicitudes por hora por clave de API. Cuando superas este límite, recibirás un error `429 Too Many Requests`. Ambos SDKs lanzarán un error que puedes capturar y manejar adecuadamente.

```python theme={null}
# Python
from profound import RateLimitError

try:
    report = client.reports.visibility(...)
except RateLimitError as e:
    print("Rate limit exceeded. Please wait before retrying.")
```

```typescript theme={null}
// JavaScript
import Profound from '@profoundai/client';

try {
  const report = await client.reports.visibility(...);
} catch (error) {
  if (error instanceof Profound.RateLimitError) {
    console.log('Rate limit exceeded. Please wait before retrying.');
  }
}
```

## Compatibilidad asíncrona

### Python

El SDK de Python admite tanto el uso síncrono como el asíncrono:

```python theme={null}
# Synchronous
from profound import Profound
client = Profound()
categories = client.organizations.categories.list()

# Asynchronous
from profound import AsyncProfound
import asyncio

async def main():
    client = AsyncProfound()
    categories = await client.organizations.categories.list()

asyncio.run(main())
```

### JavaScript

El SDK de JavaScript se basa completamente en async/await:

```typescript theme={null}
import Profound from '@profoundai/client';

const client = new Profound();

// All methods return promises
const categories = await client.organizations.categories.list();
```

## Ejemplos de código

Cada endpoint de nuestra documentación de la API incluye ejemplos de código funcionales para ambos SDKs. Explora la sección **Endpoints** en la pestaña REST API para ver ejemplos específicos de:

* Administración de organizaciones
* Descubrimiento de categorías
* Generación de informes
* Acceso a datos sin procesar
* Y más

## Soporte y recursos

* **Paquete de Python**: [PyPI](https://pypi.org/project/profound/)
* **Paquete de JavaScript**: [npm](https://www.npmjs.com/package/@profoundai/client)
* **Documentación de la API**: [Introducción a la REST API](/es/rest-api/introduction)
* **Soporte**: [support@tryprofound.com](mailto:support@tryprofound.com)

<Warning>
  Las interfaces de los SDKs pueden cambiar a medida que mejoramos la API. Te recomendamos fijar versiones específicas en entornos de producción.
</Warning>
