Para quienes construyen

Llamás una API.
Responde toda la red.

Un solo endpoint de inferencia con memoria de sesión real, ejecución paralela entre nodos y soporte para tus propios modelos. No administrás GPUs — administrás conversaciones y tareas.

bash
$ curl -s https://api.sauzal.ai/infer \
  -H "Authorization: Bearer sk_live_••••3f2a" \
  -d model=gemma3:4b \
  -d session_id=conv_8f2a \
  -d prompt="¿Cuál es mi auto favorito?"

{ "response": "Tu auto favorito es un BMW Isetta.", "node": "gpu-7f2c", "tokens": 11 }
// la respuesta vino de otro nodo distinto al
// que recibió el mensaje original — y aun así
// recuerda la conversación completa

Simplificado: en la práctica /infer te devuelve un job_id al instante y consultás el resultado por separado — ver la secuencia completa más abajo.

Qué te da la red

Cuatro cosas que no tenés que construir vos.

Conversaciones con estado

La memoria vive en el servidor, no en el nodo. Ningún nodo necesita recordar nada para que la conversación tenga sentido.

Inferencia en paralelo

Partí una tarea en subtareas, corrélas en distintos nodos al mismo tiempo, y recibí un solo resultado agregado.

Traé tu propio modelo

Subís tus pesos, la red los distribuye a los nodos con capacidad suficiente y los servís como cualquier otro modelo.

Multi-nodo sin fricción

Mandá la misma pregunta a varios nodos y quedate con la primera respuesta válida — el resto se cancela solo.

Cómo se usa

La secuencia real, paso a paso.

/infer es asíncrono: te devuelve un job_id al instante, no la respuesta del modelo (que puede tardar varios segundos). Hace falta un segundo pedido para consultar el resultado.

1. Creá una API key

Sin código: entrá a tu consola (creando cuenta con Google o GitHub) → API Keys → Crear API key. El valor sk_live_... se muestra una sola vez, guardalo.

2. Pedí la inferencia
bash
$ curl -s https://api.sauzal.ai/infer \
  -H "Authorization: Bearer sk_live_••••3f2a" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemma3:4b","prompt":"Hola"}'

{"job_id": "e4e3aa17-...", "assigned_node": "729ab090-...", "status": "queued"}
// esto NO es la respuesta del modelo -- es el ticket del trabajo
3. Consultá el resultado (repetí hasta que termine)
bash
$ curl -s https://api.sauzal.ai/jobs/e4e3aa17-...

{"status": "completed", "result": "{\"response\": \"¡Hola! ¿En qué puedo ayudarte?\"}"}
// "status" puede ser queued / running / completed / failed
// "result" es un JSON en texto -- hace falta un segundo parseo
// (json.loads / JSON.parse) para llegar al campo "response"
4. Opcional: memoria entre preguntas

Creá una sesión una vez (POST /sessions, mismo header) y mandá el session_id que te devuelve en cada /infer siguiente — sin eso, cada llamada es 100% independiente.

¿No querés escribir nada de esto a mano? El Playground de tu consola ya hace exactamente esta secuencia (sesión + pedido + consulta del resultado) con una interfaz de chat.

Ejemplos

El mismo endpoint, tres formas de usarlo.

Estos son los bodies que le mandás a POST /infer — el resto de la secuencia (header, consulta del resultado) es igual en los tres casos, ver arriba.

POST /infer
{
  "model": "gemma3:4b",
  "prompt": "Resumí este párrafo en una frase"
}
// sin session_id: cada llamada es independiente
POST /infer
{
  "model": "gemma3:4b",
  "prompt": "¿Y en qué color?",
  "session_id": "conv_8f2a"
}
// la red busca en la memoria de la sesión
// lo necesario para que la respuesta tenga sentido
POST /tasks
{
  "mode": "batch",
  "subtasks": [
    { "key": "titulo", "prompt": "Escribí un título" },
    { "key": "resumen", "prompt": "Escribí un resumen" }
  ]
}
// cada subtarea corre en el primer nodo libre;
// el resultado llega agregado y trazable

Tu primera llamada, en minutos.

Sin tarjeta para probar. Creás cuenta con Google o GitHub y te damos una API key al instante.

Crear cuenta →