Documentación

Guía de la API

API de cómputo

Una URL base y una clave para inferencia y cómputo: https://api.siliconnetwork.io. Lista las ofertas para una carga de trabajo, arranca una instancia desde una de ellas con una plantilla y límites de gasto, lee sus logs y detenla.

Aún sin conectar

No hay ningún proveedor de cómputo conectado, así que las ofertas, las instancias y los logs responden 404 Not Found hoy. Las plantillas de cargas de trabajo sí responden. Los ejemplos muestran las llamadas tal como funcionarán cuando haya un proveedor conectado; hasta entonces los SDK lanzan ComputeUnavailable y la CLI lo indica.

Cómo funciona una ejecución

  1. GET /v1/compute/offers?workload=&priority= lista las ofertas ordenadas por cheapest, fastest o balanced. Cada una indica su proveedor, región y precio, y cuándo se comprobó. La capacidad, la latencia y el rendimiento aparecen solo si el proveedor los informa.
  2. GET /v1/compute/templates lista las plantillas y sus parámetros. Ninguna plantilla recibe un secreto: una carga de trabajo que necesita una clave la obtiene del almacén de secretos del propio proveedor.
  3. POST /v1/compute/instances arranca una instancia desde una oferta. Envía una idempotency_key: al enviarla de nuevo recibes la misma instancia. Fija max_runtime_seconds y max_spend_usd: la instancia se detiene al alcanzar cualquiera de los dos. fallback: true prueba las siguientes ofertas compatibles cuando la primera no puede arrancar.
  4. GET /v1/compute/instances/{id}/logs?after= lee su salida y POST /v1/compute/instances/{id}/terminate la detiene. El gasto mostrado es solo lo que informó el proveedor, nunca una estimación.

Claves y permisos

  • Crea una clave en la página de claves de API con solo los permisos que necesita: compute:read para listar y leer instancias y logs, compute:launch para arrancarlas y detenerlas, inference para el chat.
  • Pon un límite de gasto de cómputo a la clave que arranca instancias. Al superarlo, la clave ya no puede arrancar instancias y las que arrancó se detienen.
  • Las ofertas y las plantillas no necesitan clave. Una clave limitada a una lista de IP permitidas todavía no puede usar las rutas de cómputo.
  • Los enlaces de consola se abren solo desde el panel: una clave de API se rechaza con 403.

Herramientas

  • Python: client.compute en el paquete siliconnetwork, que también instala el comando silicon.
  • TypeScript: client.compute en @siliconnetwork/sdk.
  • Terraform: el recurso silicon_compute_instance y las fuentes de datos de ofertas y plantillas, en integrations/terraform-provider-silicon.
  • MCP: un servidor para asistentes de IA que lista ofertas, arranca con límites confirmados, lee logs, detiene instancias y chatea, en integrations/mcp.
  • Bruno: una colección de peticiones para inferencia y cómputo, en sdks/collections/bruno.

Nada de esto está publicado todavía en un registro de paquetes: instálalo desde el repositorio. Todos leen SILICON_API_KEY.

Ejemplos por carga de trabajo

Sustituye los ids de proveedor y de oferta por unos de la lista de ofertas. Los valores de los parámetros son ejemplos, no valores que funcionen.

Inferencia de IA

La inferencia no arranca instancias de cómputo: llama a chat completions con la misma clave y la misma URL base. Chat completions

curl
curl -s https://api.siliconnetwork.io/v1/chat/completions \
  -H "Authorization: Bearer $SILICON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "silicon/auto", "messages": [{"role": "user", "content": "Hello"}]}'

Entrenamiento de IA

Un trabajo de ajuste fino desde la plantilla fine-tune.

curl
# 1. Offers for ai-training, balanced first
curl -s "https://api.siliconnetwork.io/v1/compute/offers?workload=ai-training&priority=balanced" \
  -H "Authorization: Bearer $SILICON_API_KEY"

# 2. Start the fine-tune template on one of them (stops at the caps)
curl -s https://api.siliconnetwork.io/v1/compute/instances \
  -H "Authorization: Bearer $SILICON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider_id": "<provider_id from the offer>",
    "offer_id": "<offer_id from the offer>",
    "workload": "ai-training",
    "idempotency_key": "ai-training-run-0001",
    "template_id": "fine-tune",
    "params": {
      "base_model": "org/model-name",
      "dataset_url": "https://example.com/data.jsonl",
      "method": "lora",
      "epochs": 3
    },
    "max_runtime_seconds": 14400,
    "max_spend_usd": "40"
  }'

# 3. Follow its logs, then stop it
curl -s "https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/logs?after=0" \
  -H "Authorization: Bearer $SILICON_API_KEY"
curl -s -X POST https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/terminate \
  -H "Authorization: Bearer $SILICON_API_KEY"

Renderizado

Un rango de fotogramas de una escena de Blender desde la plantilla render-job.

curl
# 1. Offers for rendering, fastest first
curl -s "https://api.siliconnetwork.io/v1/compute/offers?workload=rendering&priority=fastest" \
  -H "Authorization: Bearer $SILICON_API_KEY"

# 2. Start the render-job template on one of them (stops at the caps)
curl -s https://api.siliconnetwork.io/v1/compute/instances \
  -H "Authorization: Bearer $SILICON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider_id": "<provider_id from the offer>",
    "offer_id": "<offer_id from the offer>",
    "workload": "rendering",
    "idempotency_key": "rendering-run-0001",
    "template_id": "render-job",
    "params": {
      "scene_url": "https://example.com/scene.blend",
      "frame_start": 1,
      "frame_end": 240,
      "output_format": "png"
    },
    "max_runtime_seconds": 7200,
    "max_spend_usd": "20"
  }'

# 3. Follow its logs, then stop it
curl -s "https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/logs?after=0" \
  -H "Authorization: Bearer $SILICON_API_KEY"
curl -s -X POST https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/terminate \
  -H "Authorization: Bearer $SILICON_API_KEY"

Minería

Un minero apuntado a tu pool y tu wallet desde la plantilla miner.

curl
# 1. Offers for mining, cheapest first
curl -s "https://api.siliconnetwork.io/v1/compute/offers?workload=mining&priority=cheapest" \
  -H "Authorization: Bearer $SILICON_API_KEY"

# 2. Start the miner template on one of them (stops at the caps)
curl -s https://api.siliconnetwork.io/v1/compute/instances \
  -H "Authorization: Bearer $SILICON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider_id": "<provider_id from the offer>",
    "offer_id": "<offer_id from the offer>",
    "workload": "mining",
    "idempotency_key": "mining-run-0001",
    "template_id": "miner",
    "params": {
      "pool_url": "stratum+ssl://pool.example.com:3333",
      "wallet_address": "your wallet address",
      "gpu_count": 1
    },
    "max_runtime_seconds": 86400,
    "max_spend_usd": "10"
  }'

# 3. Follow its logs, then stop it
curl -s "https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/logs?after=0" \
  -H "Authorization: Bearer $SILICON_API_KEY"
curl -s -X POST https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/terminate \
  -H "Authorization: Bearer $SILICON_API_KEY"

Bots de trading

La imagen de contenedor de tu bot desde la plantilla sniping-bot. Sus claves se quedan en el almacén de secretos del proveedor.

curl
# 1. Offers for trading-bots, fastest first
curl -s "https://api.siliconnetwork.io/v1/compute/offers?workload=trading-bots&priority=fastest" \
  -H "Authorization: Bearer $SILICON_API_KEY"

# 2. Start the sniping-bot template on one of them (stops at the caps)
curl -s https://api.siliconnetwork.io/v1/compute/instances \
  -H "Authorization: Bearer $SILICON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider_id": "<provider_id from the offer>",
    "offer_id": "<offer_id from the offer>",
    "workload": "trading-bots",
    "idempotency_key": "trading-bots-run-0001",
    "template_id": "sniping-bot",
    "params": {
      "image": "ghcr.io/you/your-bot:1.0",
      "restart": "on-failure"
    },
    "max_runtime_seconds": 86400,
    "max_spend_usd": "5"
  }'

# 3. Follow its logs, then stop it
curl -s "https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/logs?after=0" \
  -H "Authorization: Bearer $SILICON_API_KEY"
curl -s -X POST https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/terminate \
  -H "Authorization: Bearer $SILICON_API_KEY"

Servidores

Una máquina sencilla desde la plantilla plain-server.

curl
# 1. Offers for servers, balanced first
curl -s "https://api.siliconnetwork.io/v1/compute/offers?workload=servers&priority=balanced" \
  -H "Authorization: Bearer $SILICON_API_KEY"

# 2. Start the plain-server template on one of them (stops at the caps)
curl -s https://api.siliconnetwork.io/v1/compute/instances \
  -H "Authorization: Bearer $SILICON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider_id": "<provider_id from the offer>",
    "offer_id": "<offer_id from the offer>",
    "workload": "servers",
    "idempotency_key": "servers-run-0001",
    "template_id": "plain-server",
    "params": {
      "image": "ubuntu:24.04",
      "ports": "22,443"
    },
    "max_runtime_seconds": 604800,
    "max_spend_usd": "25"
  }'

# 3. Follow its logs, then stop it
curl -s "https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/logs?after=0" \
  -H "Authorization: Bearer $SILICON_API_KEY"
curl -s -X POST https://api.siliconnetwork.io/v1/compute/instances/$INSTANCE_ID/terminate \
  -H "Authorization: Bearer $SILICON_API_KEY"

Errores

  • 404 Not Found: no hay ningún proveedor de cómputo conectado.
  • 402: créditos insuficientes, un límite de gasto alcanzado o el límite de gasto de cómputo de la clave (refused (key_compute_limit)).
  • 403: a la clave le falta el permiso, el acceso a cómputo de la organización está suspendido o la clave tiene una lista de IP permitidas.
  • 409: la oferta ya no existe o está caducada, o la clave de idempotencia se usó para otra oferta.
  • 422: una carga de trabajo desconocida, un parámetro de plantilla no válido (se nombra, nunca se repite) o una carga de trabajo que el proveedor no puede ejecutar.
  • 503: el proveedor no respondió. Vuelve a intentarlo con la misma clave de idempotencia.
Silicon Network›Documentación›Guías›API de cómputo50 elementos