API-Schnellstart
API-Schlüssel erstellen, per Bearer-Token authentifizieren, mit whoami prüfen, Scopes wählen, alle Endpoints finden und ungenutzte Schlüssel widerrufen.
Mit API-Schlüsseln handeln Ihre eigenen Skripte und Ihre CI im Namen Ihrer Organisation. Jeder Schlüssel trägt nur die Scopes, die Sie ihm geben.
Schlüssel erstellen
- Aktivieren Sie die Zwei-Faktor-Authentifizierung unter Settings. Ohne sie lässt sich kein Schlüssel erstellen.
- Öffnen Sie in der Konsole Keys und wählen Sie Create key.
- Benennen Sie den Schlüssel nach seinem Verwendungszweck, zum Beispiel
ci-runner. - Wählen Sie seine Scopes und seine Laufzeit: 30, 90, 180 oder 365 Tage.
- Legen Sie optional seine Ausgabenlimits fest (siehe unten).
- Kopieren Sie den Schlüssel. Er wird nur einmal angezeigt.
Owner und Admins der Organisation verwalten die Schlüssel. Jeder neue Schlüssel wird der Person, die ihn erstellt hat, per E-Mail gemeldet.
Authentifizieren
Senden Sie den Schlüssel als Bearer-Token:
export NODELODGE_API_KEY="nl_live_..."
curl https://nodelodge.com/v1/whoami \
-H "Authorization: Bearer $NODELODGE_API_KEY"
Die Antwort nennt die Organisation und die Scopes des Schlüssels:
{
"orgId": "6f1c...",
"via": "api_key",
"apiKeyId": "2b9e...",
"scopes": ["workloads:read"]
}
Nutzen Sie whoami in einer Pipeline, damit ein widerrufener, abgelaufener oder falsch eingegebener Schlüssel sofort auffällt.
Referenz
Jeder Endpoint mit seinen Parametern und einem curl-Beispiel steht in der API-Referenz. Dieselbe Beschreibung ist als OpenAPI-3.1-Dokument unter https://nodelodge.com/v1/openapi.json veröffentlicht: Importieren Sie es in Ihren HTTP-Client oder generieren Sie daraus einen typisierten Client.
curl https://nodelodge.com/v1/openapi.json -o nodelodge-openapi.json
Scopes
| Scope | Erlaubt |
|---|---|
workloads:read |
Die Kataloge, Ihre Sitzungen und Anmietungen, Ihre gespeicherten SSH-Schlüssel und die Umgebungen lesen. |
workloads:write |
Sitzungen starten, stoppen und ihr Budget erhöhen, auf Kosten Ihrer Organisation, und die Verbindungsdaten der vom Schlüssel gestarteten Sitzungen lesen. |
volumes |
Speicher-Volumes verwalten. |
secrets |
Gespeicherte Secrets verwalten. |
billing:read |
Das verfügbare Guthaben und die Limits Ihres Kontos lesen. |
Geben Sie jedem Schlüssel nur die Scopes, die seine Aufgabe braucht. Ein Schlüssel, der nur den Status meldet, braucht workloads:read.
Was ein Schlüssel aufrufen kann
| Request | Scope |
|---|---|
GET /v1/catalog/partner-offers, GET /v1/catalog/partner-offers/{id} |
workloads:read |
GET /v1/catalog/offers, GET /v1/catalog/offers/{id} |
workloads:read |
GET /v1/sessions, GET /v1/sessions/{id}, GET /v1/sessions/{id}/receipt |
workloads:read |
GET /v1/environments, GET /v1/client-address, GET /v1/ssh-keys |
workloads:read |
POST /v1/sessions, POST /v1/sessions/{id}/stop, POST /v1/sessions/{id}/budget |
workloads:write |
GET /v1/sessions/{id}/access |
workloads:write |
GET /v1/reservations, GET /v1/reservations/{id} |
workloads:read |
POST /v1/reservations, POST /v1/reservations/{id}/start, /complete, /cancel |
workloads:write |
GET /v1/account/funds, GET /v1/limits |
billing:read |
GET /v1/whoami |
beliebig |
Ein Schlüssel erhöht das Budget und liest die Verbindungsdaten nur der Sitzungen, die er gestartet hat. Jeder Schlüssel der Organisation mit workloads:write kann eine Sitzung stoppen.
Eine Sitzung starten
curl -X POST https://nodelodge.com/v1/sessions \
-H "Authorization: Bearer $NODELODGE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"partnerOfferId":"3f0c8f5e-8c3a-4f39-9a8e-2d9b4c1e7a10","environmentId":"jupyterlab","pricing":"on_demand","budgetCents":2000,"allowedCidr":"203.0.113.7","sshPublicKey":"ssh-ed25519 AAAA... you@laptop"}'
budgetCentsist der Höchstbetrag der Sitzung. Er wird beim Start auf Ihrem Guthaben reserviert. Abgerechnet wird die tatsächliche Laufzeit der Maschine ab dem Moment, in dem sie bereit ist, und Budget Guard stoppt die Sitzung, bevor das Budget aufgebraucht ist.allowedCidrist die öffentliche IPv4-Adresse oder ein Bereich bis /24, der sich per SSH verbinden darf.sshPublicKeyöffnet nur diese Sitzung: Der Schlüssel wird nicht in Ihrem Konto gespeichert. Um einen in der Konsole gespeicherten Schlüssel zu nutzen, senden Sie stattdessen seine ID insshKeyIds. Schlüssel speichern oder aus Ihrem Konto entfernen Sie in der Konsole.environmentId: Rechenzentrumsmaschinen führenjupyterlabaus.GET /v1/environments?offerId=...listet, was eine Community-Maschine ausführen kann.- Mit
maxDurationHoursstoppt die Sitzung nach dieser Anzahl Stunden, auch wenn noch Budget übrig ist. - Der
Idempotency-Key-Header sorgt dafür, dass ein wiederholter Request nur eine Sitzung startet.
Lesen Sie die Sitzung mit GET /v1/sessions/{id}: Sobald ihr Status ready ist, liefert directSsh Host, Benutzer und Port. Erhöhen Sie ihr Budget mit POST /v1/sessions/{id}/budget und stoppen Sie sie mit POST /v1/sessions/{id}/stop: Die Abrechnung endet, und der Rest des Budgets wird freigegeben.
Antwortet POST /v1/sessions mit 409 RESERVATION_REQUIRED, buchen Sie die Maschine mit POST /v1/reservations (partnerOfferId und durationHours, oder mode: "on_demand") und starten Sie sie mit POST /v1/reservations/{id}/start. Eine feste Dauer reserviert ihren vollen Preis, und maxCostCents lehnt die Buchung ab, wenn dieser Betrag den Wert überschreiten würde. On demand deckt der reservierte Betrag die nächsten 60 Minuten und wird verlängert, solange die Maschine läuft. In beiden Fällen wird pro angefangener Minute tatsächlicher Nutzung abgerechnet, ohne Mindestdauer von einer Stunde.
Um Sitzungen über einen KI-Agenten zu steuern, nutzen Sie den MCP-Server.
Ausgabenlimits
Jeder Schlüssel kann Limits tragen. Node Lodge setzt sie beim Start einer Sitzung, bei jeder Erhöhung ihres Budgets und bei jeder Verlängerung einer On-demand-Buchung durch:
| Limit | Begrenzt |
|---|---|
| Pro Sitzung | Die maximalen Kosten einer mit dem Schlüssel gestarteten Sitzung: ihr Budget, Erhöhungen eingeschlossen. |
| Gesamt | Alles, was der Schlüssel je gebunden hat: das ganze Budget einer laufenden Sitzung, den abgerechneten Betrag nach ihrem Ende. |
| Kalendermonat | Dasselbe für Sitzungen, die in diesem Kalendermonat (UTC) gestartet wurden. |
| Gleichzeitige Sitzungen | Laufende Sitzungen und offene Buchungen des Schlüssels, zusammen. |
Ein Start oder eine Erhöhung, die ein Limit überschreiten würde, erhält 409 API_KEY_LIMIT und reserviert nichts. Gleichzeitige Requests mit einem Schlüssel werden nacheinander geprüft, sodass sie ein Limit nicht gemeinsam überschreiten können. Ein Schlüssel ohne Limits bleibt durch Ihr verfügbares Guthaben und Ihre Kontolimits begrenzt. Owner und Admins ändern die Limits eines aktiven Schlüssels mit Edit limits unter Keys, nach Eingabe eines neuen Zwei-Faktor-Codes. In der Konsole gestartete Sitzungen unterliegen keinem Schlüssel-Limit.
Kontoeinstellungen, Schlüssel, gespeicherte SSH-Schlüssel, Karten und Zwei-Faktor-Authentifizierung bleiben in der Konsole: Ein Request mit API-Schlüssel darauf erhält 403 API_KEY_NOT_ALLOWED. Jede Aktion mit einem Schlüssel erscheint unter Activity, mit dem Schlüssel, der sie ausgelöst hat.
Fehler
| Status | Bedeutung |
|---|---|
401 |
Der Schlüssel fehlt, ist falsch eingegeben, widerrufen oder abgelaufen. |
402 |
Ihr verfügbares Guthaben deckt die Sitzung nicht. |
403 |
Dem Schlüssel fehlt der Scope, oder die Aktion erfordert eine Konsolensitzung. |
409 |
Ein Limit des Schlüssels oder das maxCostCents des Requests würde überschritten. SESSION_REQUIRED und RESERVATION_REQUIRED nennen den Request, der stattdessen zu senden ist. |
429 |
Zu viele Requests. Warten Sie und wiederholen Sie mit Backoff. |
Fehler-Bodys haben überall dieselbe Form:
{ "error": { "code": "API_KEY_NOT_ALLOWED", "message": "...", "reference": "7F3K-92QD" } }
reference identifiziert den Request. Protokollieren Sie ihn mit dem Fehler und geben Sie ihn an, wenn Sie dem Support schreiben.
Schlüssel schützen
- Speichern Sie Schlüssel in Ihrem Secret Manager oder in den CI-Secrets, nie im Code.
- Ein Schlüssel pro Tool: So widerrufen Sie einen, ohne die anderen anzutasten.
- Widerrufen Sie einen Schlüssel unter Keys, sobald er geleakt ist. Requests damit enden sofort.
- Jede Erstellung und jeder Widerruf eines Schlüssels steht unter Activity.