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

# Python

[![PyPI - Version](https://img.shields.io/pypi/v/sunra_client)](https://pypi.org/project/sunra_client)

### Introducción

La biblioteca cliente para Python ofrece una interfaz fácil de usar para interactuar con los servicios de Sunra.

### Instalación

Para integrar el cliente en tu proyecto, instálalo usando pip:

```bash theme={null}
pip install sunra-client
```

### Características

#### Llamando a los Endpoints

Sunra gestiona las solicitudes de los endpoints a través de un sistema de colas, lo que garantiza la fiabilidad y la escalabilidad. Usa el método `subscribe` para enviar una solicitud y esperar el resultado.

**Ejemplo:**

```python theme={null}
import sunra_client

result = sunra_client.subscribe(
    "black-forest-labs/flux-kontext-pro/text-to-image",
    arguments={
        "prompt": 'Un pueblo costero inspirado en Studio Ghibli con casas de colores, ropa tendida y gatos durmiendo en los alféizares de las ventanas.',
        "width": 1024,
        "height": 768,
        "output_format": 'jpeg'
    },
    with_logs=True,
    on_enqueue=print,
    on_queue_update=print,
)
print(result)
```

#### Gestión de la Cola

Gestiona tus solicitudes con estos métodos:

##### Enviando una Solicitud

Envía una solicitud y recupera el `request_id` para usarlo más tarde.

**Ejemplo:**

```python theme={null}
import sunra_client

handler = sunra_client.submit(
    "black-forest-labs/flux-kontext-pro/text-to-image",
    arguments={
      "prompt": 'Un pueblo costero inspirado en Studio Ghibli con casas de colores, ropa tendida y gatos durmiendo en los alféizares de las ventanas.',
      "width": 1024,
      "height": 768,
      "output_format": 'jpeg'
    },
    webhook_url="https://optional.webhook.url/for/results",
)
request_id = handler.request_id
```

##### Comprobando el Estado de la Solicitud

Recupera el estado de una solicitud.

**Ejemplo:**

```python theme={null}
import sunra_client
status = sunra_client.status(request_id, with_logs=True)
```

##### Recuperando los Resultados de la Solicitud

Obtén el resultado de una solicitud completada.

**Ejemplo:**

```python theme={null}
import sunra_client
result = sunra_client.result(request_id)
```

#### Carga de Archivos

Sube archivos para obtener URLs para usar en solicitudes asíncronas. Esto es esencial para los modelos que procesan archivos, como los convertidores de imagen a video o de voz a texto.

<Note>Tamaño máximo de archivo: 100MB</Note>

##### Subiendo un Archivo Local

Puedes subir fácilmente un archivo desde tu sistema de archivos local. Esto es útil para scripts o aplicaciones que procesan datos locales.

```python theme={null}
import sunra_client

# Inicializa el cliente síncrono
client = sunra_client.SyncClient()

try:
  # Sube un archivo desde una ruta dada
  file_url = client.upload_file(path="path/to/your/image.png")
  print(f"Archivo subido con éxito: {file_url}")
  # Esta URL ahora se puede usar con un endpoint de modelo
except FileNotFoundError:
  print("Error: No se encontró el archivo en la ruta especificada.")
except Exception as e:
  print(f"Ocurrió un error: {e}")
```

##### Subiendo Datos en Memoria

También puedes subir datos que se encuentran en la memoria, como el contenido de una imagen creada con PIL (Pillow) o un archivo recibido en una solicitud web.

<CodeGroup>
  ```python PIL Image theme={null}
  import sunra_client
  from PIL import Image
  import io

  # Inicializa el cliente síncrono
  client = sunra_client.SyncClient()

  # Crea una imagen en memoria, por ejemplo con Pillow
  image = Image.new("RGB", (600, 400), color = 'red')
  byte_arr = io.BytesIO()
  image.save(byte_arr, format='PNG')
  image_bytes = byte_arr.getvalue()

  # Sube los datos de la imagen en memoria usando el método `upload`
  image_url = client.upload(
      data=image_bytes,
      content_type="image/png"
  )
  print(f"Imagen subida con éxito: {image_url}")
  ```

  ```python Raw Bytes theme={null}
  import sunra_client

  # Inicializa el cliente síncrono
  client = sunra_client.SyncClient()

  # Algunos bytes sin procesar que podrías tener al leer un archivo o una solicitud web
  raw_data = b"some file content here"

  # Sube los bytes sin procesar
  data_url = client.upload(
      data=raw_data,
      content_type="application/octet-stream"
  )
  print(f"Datos subidos con éxito: {data_url}")
  ```
</CodeGroup>

### Soporte

Únete a nuestra comunidad para obtener ayuda o participar en debates:

* **Comunidad de Discord**: [Únete a nosotros](https://discord.gg/897qCzvCcU)
* **Repositorio de GitHub**: [Visítalo aquí](https://github.com/sunra-ai/sunra-clients)

¡Estamos aquí para ayudarte!
