Doku

API-Leitfaden

Compute-API

Eine Basis-URL und ein Schlüssel für Inferenz und Compute: https://api.siliconnetwork.io. Liste Angebote für einen Workload auf, starte aus einem davon eine Instanz mit Vorlage und Ausgabengrenzen, lies ihre Logs und halte sie an.

Noch nicht angebunden

Es ist kein Compute-Anbieter angebunden, daher antworten Angebote, Instanzen und Logs heute mit 404 Not Found. Die Vorlagen für Workloads antworten. Die Beispiele zeigen die Aufrufe so, wie sie funktionieren, sobald ein Anbieter angebunden ist; bis dahin werfen die SDKs ComputeUnavailable, und die CLI sagt es.

So läuft ein Auftrag

  1. GET /v1/compute/offers?workload=&priority= listet Angebote, sortiert nach cheapest, fastest oder balanced. Jedes nennt Anbieter, Region und Preis und wann es geprüft wurde. Kapazität, Latenz und Durchsatz erscheinen nur, wenn der Anbieter sie meldet.
  2. GET /v1/compute/templates listet die Vorlagen und ihre Parameter. Keine Vorlage nimmt ein Geheimnis entgegen: Ein Workload, der einen Schlüssel braucht, bekommt ihn aus dem Geheimnisspeicher des Anbieters.
  3. POST /v1/compute/instances startet eine Instanz aus einem Angebot. Sende einen idempotency_key: Derselbe Schlüssel liefert dieselbe Instanz zurück. Setze max_runtime_seconds und max_spend_usd: Die Instanz wird bei der ersten Grenze angehalten. fallback: true versucht die nächsten passenden Angebote, wenn das erste nicht starten kann.
  4. GET /v1/compute/instances/{id}/logs?after= liest ihre Ausgabe, POST /v1/compute/instances/{id}/terminate hält sie an. Angezeigte Ausgaben sind nur, was der Anbieter gemeldet hat, nie eine Schätzung.

Schlüssel und Berechtigungen

  • Erstelle auf der Seite API-Schlüssel einen Schlüssel mit nur den Berechtigungen, die er braucht: compute:read zum Auflisten und Lesen von Instanzen und Logs, compute:launch zum Starten und Anhalten, inference für den Chat.
  • Gib einem Schlüssel, der Instanzen startet, ein Compute-Ausgabenlimit. Darüber kann er keine Instanzen mehr starten, und die von ihm gestarteten werden angehalten.
  • Angebote und Vorlagen brauchen keinen Schlüssel. Ein Schlüssel mit IP-Allowlist kann die Compute-Routen noch nicht nutzen.
  • Konsolen-Links öffnen sich nur im Dashboard: Ein API-Schlüssel wird mit 403 abgewiesen.

Werkzeuge

  • Python: client.compute im Paket siliconnetwork, das auch den Befehl silicon installiert.
  • TypeScript: client.compute in @siliconnetwork/sdk.
  • Terraform: die Ressource silicon_compute_instance und die Datenquellen für Angebote und Vorlagen, in integrations/terraform-provider-silicon.
  • MCP: ein Server für KI-Assistenten, der Angebote auflistet, mit bestätigten Grenzen startet, Logs liest, Instanzen anhält und chattet, in integrations/mcp.
  • Bruno: eine Sammlung von Anfragen für Inferenz und Compute, in sdks/collections/bruno.

Noch ist nichts davon in einer Paketregistry veröffentlicht: Installiere es aus dem Repository. Alle lesen SILICON_API_KEY.

Beispiele nach Workload

Ersetze die Anbieter- und Angebots-IDs durch solche aus der Angebotsliste. Parameterwerte sind Beispiele, keine funktionierenden Werte.

KI-Inferenz

Inferenz startet keine Compute-Instanzen: Rufe Chat Completions mit demselben Schlüssel und derselben Basis-URL auf. 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"}]}'

KI-Training

Ein Fine-Tuning-Auftrag aus der Vorlage 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"

Rendering

Ein Bildbereich einer Blender-Szene aus der Vorlage 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"

Mining

Ein Miner für deinen Pool und deine Wallet aus der Vorlage 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"

Trading-Bots

Das Container-Image deines Bots aus der Vorlage sniping-bot. Seine Schlüssel bleiben im Geheimnisspeicher des Anbieters.

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"

Server

Eine einfache Maschine aus der Vorlage 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"

Fehler

  • 404 Not Found: Es ist kein Compute-Anbieter angebunden.
  • 402: zu wenig Guthaben, eine erreichte Ausgabengrenze oder das Compute-Ausgabenlimit des Schlüssels (refused (key_compute_limit)).
  • 403: Dem Schlüssel fehlt die Berechtigung, der Compute-Zugang der Organisation ist gesperrt, oder der Schlüssel hat eine IP-Allowlist.
  • 409: Das Angebot ist weg oder veraltet, oder der Idempotenzschlüssel wurde für ein anderes Angebot verwendet.
  • 422: ein unbekannter Workload, ein ungültiger Vorlagenparameter (benannt, nie wiederholt) oder ein Workload, den der Anbieter nicht ausführen darf.
  • 503: Der Anbieter hat nicht geantwortet. Versuche es mit demselben Idempotenzschlüssel erneut.
Silicon Network›Doku›Anleitungen›Compute-API50 Objekte