Guías
- Inicio rápido
- Autenticación y claves
- Protección de claves
- Modelos, alias y alternativas
- Elección automática de modelo (silicon/auto)
- Chat completions
- Streaming
- Salidas estructuradas y herramientas
- Logprobs
- Visión
- Responses, Claude y Ollama
- Embeddings, rerank, audio e imágenes
- Archivos y lotes
- Documentos y búsqueda
- Adaptadores LoRA
- Etiquetas de proyecto y costes
- Caché de prefijos
- Cabeceras, límites de uso y topes de gasto
- Errores
- Privacidad y conservación de datos
- Recibos verificables
- Residencia de datos
- Precios
- Facturación
- Pago por solicitud (x402)
- Oráculo en cadena
- Crédito para agentes (líneas de cómputo respaldadas)
- Estado del servicio
- SDKs
- SDK de Swift
- Integraciones
- Ejecutar un nodo
- Agente para Linux
- API de cómputo
- Arquitectura
- Registro de cambios
- Glosario
Referencia de la API
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
GET /v1/compute/offers?workload=&priority=lista las ofertas ordenadas porcheapest,fastestobalanced. 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.GET /v1/compute/templateslista 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.POST /v1/compute/instancesarranca una instancia desde una oferta. Envía unaidempotency_key: al enviarla de nuevo recibes la misma instancia. Fijamax_runtime_secondsymax_spend_usd: la instancia se detiene al alcanzar cualquiera de los dos.fallback: trueprueba las siguientes ofertas compatibles cuando la primera no puede arrancar.GET /v1/compute/instances/{id}/logs?after=lee su salida yPOST /v1/compute/instances/{id}/terminatela 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:readpara listar y leer instancias y logs,compute:launchpara arrancarlas y detenerlas,inferencepara 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.computeen el paquetesiliconnetwork, que también instala el comandosilicon. - TypeScript:
client.computeen@siliconnetwork/sdk. - Terraform: el recurso
silicon_compute_instancey las fuentes de datos de ofertas y plantillas, enintegrations/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 -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.
# 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.
# 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.
# 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.
# 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.
# 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.