API reference

Every public endpoint of the Node Lodge API: authentication, parameters, request bodies and a curl example for each.

The machine-readable description of this API is at https://nodelodge.com/v1/openapi.json (OpenAPI 3.1). Import it in your HTTP client or generate a client from it.

Authentication

Each endpoint states how it authenticates:

  • An API key: send Authorization: Bearer $NODELODGE_API_KEY. Create keys in the console, under Keys. See API quickstart for scopes.
  • A console session: the endpoints the console uses. Sign in with POST /v1/auth/login and keep the session cookie (-c cookies.txt), then send it (-b cookies.txt). With two-factor authentication on, finish the sign-in with POST /v1/auth/mfa/verify, sending the same cookie file with -b cookies.txt -c cookies.txt.
  • None: public endpoints.

An API key on an endpoint that needs a console session answers 403 API_KEY_NOT_ALLOWED. Requests and responses are JSON. Errors have one shape: { "error": { "code": "...", "message": "..." } }.

Sign-in and account

POST /v1/account/close

Close your account and its organization.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
password string Yes up to 128 characters
acceptCreditLoss boolean No
curl -X POST "https://nodelodge.com/v1/account/close" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"password":"correct horse battery staple"}'

GET /v1/account/closure

See what closing your account does now, and what blocks it.

Authentication: A console session.

curl "https://nodelodge.com/v1/account/closure" \
  -b cookies.txt

GET /v1/account/credit

Read your organization’s prepaid credit and its entries.

Authentication: A console session.

curl "https://nodelodge.com/v1/account/credit" \
  -b cookies.txt

GET /v1/account/funds

Read what your organization can spend now: a new session is admitted against the available amount.

Authentication: An API key with the billing:read scope, or a console session.

curl "https://nodelodge.com/v1/account/funds" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/account/terms

Accept the terms of use, in the version that GET /v1/client-config names.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
version string Yes up to 20 characters
curl -X POST "https://nodelodge.com/v1/account/terms" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"version":"2.0"}'

POST /v1/auth/login

Sign in and receive a session cookie.

Authentication: None.

Request body (JSON):

Field Type Required Rules
email email address Yes up to 254 characters
password string Yes up to 128 characters
curl -X POST "https://nodelodge.com/v1/auth/login" \
  -c cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com","password":"correct horse battery staple"}'

POST /v1/auth/logout

Sign out of this session.

Authentication: None.

curl -X POST "https://nodelodge.com/v1/auth/logout" \
  -b cookies.txt

GET /v1/auth/mfa

Read your two-factor status.

Authentication: A console session.

curl "https://nodelodge.com/v1/auth/mfa" \
  -b cookies.txt

POST /v1/auth/mfa/disable

Turn off two-factor authentication.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
password string Yes up to 128 characters
curl -X POST "https://nodelodge.com/v1/auth/mfa/disable" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"password":"correct horse battery staple"}'

POST /v1/auth/mfa/recovery-codes

Replace your recovery codes.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
code string Yes 6 characters or more, up to 40 characters
curl -X POST "https://nodelodge.com/v1/auth/mfa/recovery-codes" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"code":"123456"}'

POST /v1/auth/mfa/step-up

Confirm your second factor before a sensitive action.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
code string Yes 6 characters or more, up to 40 characters
curl -X POST "https://nodelodge.com/v1/auth/mfa/step-up" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"code":"123456"}'

POST /v1/auth/mfa/totp/confirm

Finish turning on an authenticator app.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
code string Yes 6 characters or more, up to 40 characters
curl -X POST "https://nodelodge.com/v1/auth/mfa/totp/confirm" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"code":"123456"}'

POST /v1/auth/mfa/totp/setup

Start turning on an authenticator app.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
password string Yes up to 128 characters
curl -X POST "https://nodelodge.com/v1/auth/mfa/totp/setup" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"password":"correct horse battery staple"}'

POST /v1/auth/mfa/verify

Complete a sign-in with your authenticator code.

Authentication: None.

Request body (JSON):

Field Type Required Rules
code string Yes 6 characters or more, up to 40 characters
curl -X POST "https://nodelodge.com/v1/auth/mfa/verify" \
  -b cookies.txt -c cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"code":"123456"}'

POST /v1/auth/password

Change your password.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
currentPassword string Yes up to 128 characters
newPassword string Yes 12 characters or more, up to 128 characters
curl -X POST "https://nodelodge.com/v1/auth/password" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"currentPassword":"correct horse battery staple","newPassword":"a longer passphrase of yours"}'

POST /v1/auth/password-reset/confirm

Set a new password from a reset link.

Authentication: None.

Request body (JSON):

Field Type Required Rules
token string Yes 20 characters or more, up to 100 characters
password string Yes 12 characters or more, up to 128 characters
curl -X POST "https://nodelodge.com/v1/auth/password-reset/confirm" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_FROM_THE_EMAIL_LINK","password":"correct horse battery staple"}'

POST /v1/auth/password-reset/request

Send a password reset link by email.

Authentication: None.

Request body (JSON):

Field Type Required Rules
email email address Yes up to 254 characters
curl -X POST "https://nodelodge.com/v1/auth/password-reset/request" \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com"}'

POST /v1/auth/sessions/revoke-all

Sign out of every session.

Authentication: A console session.

curl -X POST "https://nodelodge.com/v1/auth/sessions/revoke-all" \
  -b cookies.txt

POST /v1/auth/signup

Create an account and its organization.

Authentication: None.

Request body (JSON):

Field Type Required Rules
email email address Yes up to 254 characters
password string Yes 12 characters or more, up to 128 characters
displayName string Yes up to 80 characters
organizationName string No up to 120 characters
acceptTerms true Yes
inviteToken string No 20 characters or more, up to 100 characters
curl -X POST "https://nodelodge.com/v1/auth/signup" \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com","password":"correct horse battery staple","displayName":"Ada Lovelace","acceptTerms":true}'

POST /v1/auth/verify-email

Confirm your email address from the link you received.

Authentication: None.

Request body (JSON):

Field Type Required Rules
token string Yes 20 characters or more, up to 100 characters
curl -X POST "https://nodelodge.com/v1/auth/verify-email" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_FROM_THE_EMAIL_LINK"}'

POST /v1/auth/verify-email/resend

Send the confirmation email again.

Authentication: A console session.

curl -X POST "https://nodelodge.com/v1/auth/verify-email/resend" \
  -b cookies.txt

GET /v1/client-config

Read the console’s public settings.

Authentication: None.

curl "https://nodelodge.com/v1/client-config"

GET /v1/me

Read your profile, organization and access.

Authentication: A console session.

curl "https://nodelodge.com/v1/me" \
  -b cookies.txt

API keys

GET /v1/api-keys

List your organization’s API keys.

Authentication: A console session.

curl "https://nodelodge.com/v1/api-keys" \
  -b cookies.txt

POST /v1/api-keys

Create an API key. The key is returned once; creating one requires two-factor authentication and a recent code.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
name string Yes up to 60 characters
scopes array of workloads:read, workloads:write, volumes, secrets, billing:read Yes up to 5 items
monthlySpendCapCents integer No 1 to 10000000
maxConcurrentWorkloads integer No 1 to 100
maxTotalSpendCents integer No 1 to 10000000
maxSessionSpendCents integer No 1 to 10000000
expiresInDays integer No 1 to 365, default 90
curl -X POST "https://nodelodge.com/v1/api-keys" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"name":"ci-runner","scopes":["workloads:read"]}'

PATCH /v1/api-keys/{id}

Change the spending limits of an API key. Requires a recent two-factor code.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes

Request body (JSON):

Field Type Required Rules
monthlySpendCapCents integer No
maxConcurrentWorkloads integer No
maxTotalSpendCents integer No
maxSessionSpendCents integer No
curl -X PATCH "https://nodelodge.com/v1/api-keys/$API_KEY_ID" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"monthlySpendCapCents":1}'

DELETE /v1/api-keys/{id}

Revoke an API key. Requests using it stop at once.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl -X DELETE "https://nodelodge.com/v1/api-keys/$API_KEY_ID" \
  -b cookies.txt

GET /v1/whoami

Check a key or a session: the organization and the scopes it carries.

Authentication: An API key (any scope), or a console session.

curl "https://nodelodge.com/v1/whoami" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

Community catalog

GET /v1/catalog/offers

Search Community machines.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
gpuModel query string No up to 80 characters
minGpuCount query integer No 0 to 16
minVramGb query number No 0 to 1024
minRamGb query number No 0 to 65536
minVcpu query integer No 0 to 4096
region query string No
maxPricePerHourCents query integer No 1 to 9007199254740991
onlineOnly query true, false No
sort query price_asc, price_desc, vram_desc No default "price_asc"
limit query integer No 1 to 100, default 50
curl "https://nodelodge.com/v1/catalog/offers" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

GET /v1/catalog/offers/{id}

Read one Community offer.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/catalog/offers/$OFFER_ID" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

GET /v1/catalog/offers/{id}/quote

Price a Community rental for a number of hours.

Authentication: A console session.

Name In Type Required Rules
durationHours query integer Yes 1 to 720
id path UUID Yes
curl "https://nodelodge.com/v1/catalog/offers/$OFFER_ID/quote?durationHours=2" \
  -b cookies.txt

Secure catalog

GET /v1/catalog/partner-offers

List Secure machines, in stock first, then out of stock with the last time each was available.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
includeUnavailable query true, false No default "true"
curl "https://nodelodge.com/v1/catalog/partner-offers" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

GET /v1/catalog/partner-offers/{id}

Read one Secure offer.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/catalog/partner-offers/$PARTNER_OFFER_ID" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

Compute sessions

GET /v1/client-address

Read the public IPv4 address your requests come from, to admit SSH to a data-center machine.

Authentication: An API key with the workloads:read scope, or a console session.

curl "https://nodelodge.com/v1/client-address" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

GET /v1/environments

List ready-to-use environments; with an offer, whether each runs on its machine and why not.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
offerId query UUID No
tier query secure No
curl "https://nodelodge.com/v1/environments" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

GET /v1/sessions

List your compute sessions, as renter or as provider.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
side query renter, provider No default "renter"
limit query integer No 1 to 200, default 50
curl "https://nodelodge.com/v1/sessions" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/sessions

Start a compute session. Its budget is reserved on prepaid credit and never exceeded; billing follows real time from the moment the machine is ready. Give saved SSH key ids, or one public key for this session only. With an API key, the budget counts toward the limits of the key.

Authentication: An API key with the workloads:write scope, or a console session.

Request body (JSON):

Field Type Required Rules
offerId UUID No
partnerOfferId UUID No
environmentId string Yes
sshKeyIds array of UUID No up to 10 items
sshPublicKey string No 40 characters or more, up to 16384 characters
budgetCents integer Yes 1 to 10000000
maxDurationHours integer No 1 to 2160
pricing on_demand, interruptible, reserved Yes
reservedDays integer No 1 to 30
model object No
allowedCidr string No 7 characters or more, up to 18 characters
curl -X POST "https://nodelodge.com/v1/sessions" \
  -H "Authorization: Bearer $NODELODGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"partnerOfferId":"3f0c8f5e-8c3a-4f39-9a8e-2d9b4c1e7a10","environmentId":"jupyterlab","budgetCents":500,"pricing":"on_demand","sshPublicKey":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIReplaceWithYourOwnPublicKey you@laptop","allowedCidr":"203.0.113.7"}'

GET /v1/sessions/{id}

Read a compute session. While it starts, launch gives its steps (order placed, machine allocated, machine started, environment and stability checks, ready) and which one is under way.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/sessions/$SESSION_ID" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

GET /v1/sessions/{id}/access

Read how to connect to a ready Community session: SSH through the relay and JupyterLab. Renter only; with an API key, sessions launched with that key only. A ready Secure session gives its SSH address in directSsh.

Authentication: An API key with the workloads:write scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/sessions/$SESSION_ID/access" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/sessions/{id}/budget

Raise the budget of a running session, reserving the difference on prepaid credit. With an API key, sessions launched with that key only, within its limits.

Authentication: An API key with the workloads:write scope, or a console session.

Name In Type Required Rules
id path UUID Yes

Request body (JSON):

Field Type Required Rules
budgetCents integer Yes 1 to 10000000
curl -X POST "https://nodelodge.com/v1/sessions/$SESSION_ID/budget" \
  -H "Authorization: Bearer $NODELODGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"budgetCents":1}'

GET /v1/sessions/{id}/receipt

Get the usage receipt of an ended session, as JSON or as CSV with format=csv.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
format query json, csv No default "json"
id path UUID Yes
curl "https://nodelodge.com/v1/sessions/$SESSION_ID/receipt" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/sessions/{id}/stop

Stop a compute session. Billing ends when it really stops and the rest of the budget is released.

Authentication: An API key with the workloads:write scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl -X POST "https://nodelodge.com/v1/sessions/$SESSION_ID/stop" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

SSH keys

GET /v1/ssh-keys

List your SSH public keys.

Authentication: An API key with the workloads:read scope, or a console session.

curl "https://nodelodge.com/v1/ssh-keys" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/ssh-keys

Add an SSH public key. Requires a recent two-factor code when two-factor is on.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
name string No up to 60 characters
publicKey string Yes up to 16384 characters
curl -X POST "https://nodelodge.com/v1/ssh-keys" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"publicKey":"text"}'

DELETE /v1/ssh-keys/{id}

Remove one of your SSH public keys. Sessions already started keep theirs.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl -X DELETE "https://nodelodge.com/v1/ssh-keys/$SSH_KEY_ID" \
  -b cookies.txt

Rentals

GET /v1/reservations

List your rentals, as a renter or as a provider.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
side query renter, provider No default "renter"
hostId query UUID No
limit query integer No 1 to 200, default 50
curl "https://nodelodge.com/v1/reservations" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/reservations

Book a machine. When data-center machines start as sessions, a partner offer answers 409 SESSION_REQUIRED: use POST /v1/sessions. On demand, the amount held covers the next 60 minutes and is renewed while the machine runs; billing is per started minute of real use, with no one-hour minimum.

Authentication: An API key with the workloads:write scope, or a console session.

Request body (JSON):

Field Type Required Rules
offerId UUID Yes
durationHours integer Yes 1 to 720
startsAt date and time (ISO 8601) No
curl -X POST "https://nodelodge.com/v1/reservations" \
  -H "Authorization: Bearer $NODELODGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"offerId":"3f0c8f5e-8c3a-4f39-9a8e-2d9b4c1e7a10","durationHours":2}'

GET /v1/reservations/summary

Count your rentals by status.

Authentication: A console session.

Name In Type Required Rules
side query renter, provider No default "renter"
curl "https://nodelodge.com/v1/reservations/summary" \
  -b cookies.txt

GET /v1/reservations/{id}

Read one rental.

Authentication: An API key with the workloads:read scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/reservations/$RESERVATION_ID" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/reservations/{id}/cancel

Cancel a rental before it starts.

Authentication: An API key with the workloads:write scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl -X POST "https://nodelodge.com/v1/reservations/$RESERVATION_ID/cancel" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/reservations/{id}/complete

End a running rental.

Authentication: An API key with the workloads:write scope, or a console session.

Name In Type Required Rules
id path UUID Yes
curl -X POST "https://nodelodge.com/v1/reservations/$RESERVATION_ID/complete" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

POST /v1/reservations/{id}/start

Start a rental with your SSH key and the IP address allowed to connect.

Authentication: An API key with the workloads:write scope, or a console session.

Name In Type Required Rules
id path UUID Yes

Request body (JSON):

Field Type Required Rules
sshPublicKey string Yes 40 characters or more, up to 2000 characters
allowedCidr string Yes 7 characters or more, up to 18 characters
curl -X POST "https://nodelodge.com/v1/reservations/$RESERVATION_ID/start" \
  -H "Authorization: Bearer $NODELODGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sshPublicKey":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIReplaceWithYourOwnPublicKey you@laptop","allowedCidr":"203.0.113.7"}'

Billing and credit

GET /v1/billing

Read your balance, card and payments.

Authentication: A console session.

curl "https://nodelodge.com/v1/billing" \
  -b cookies.txt

PUT /v1/billing/auto-topup

Turn on or change automatic top-up of your credit.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
thresholdCents integer Yes 500 to 1000000
amountCents integer Yes 1000 to 1000000
curl -X PUT "https://nodelodge.com/v1/billing/auto-topup" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"thresholdCents":500,"amountCents":2500}'

DELETE /v1/billing/auto-topup

Turn off automatic top-up.

Authentication: A console session.

curl -X DELETE "https://nodelodge.com/v1/billing/auto-topup" \
  -b cookies.txt

POST /v1/billing/card

Start saving a card, on a hosted payment page.

Authentication: A console session.

curl -X POST "https://nodelodge.com/v1/billing/card" \
  -b cookies.txt

DELETE /v1/billing/card

Remove your saved card.

Authentication: A console session.

curl -X DELETE "https://nodelodge.com/v1/billing/card" \
  -b cookies.txt

POST /v1/billing/credit

Buy prepaid credit, on a hosted payment page.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
amountCents integer Yes 1000 to 1000000
curl -X POST "https://nodelodge.com/v1/billing/credit" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"amountCents":2500}'

GET /v1/limits

Read your organization’s account limits: GPUs at a time, GPU classes, credit per 24 hours, what is in use and the next step.

Authentication: An API key with the billing:read scope, or a console session.

curl "https://nodelodge.com/v1/limits" \
  -H "Authorization: Bearer $NODELODGE_API_KEY"

Machines (providers)

GET /v1/hosts

List your machines.

Authentication: A console session.

Name In Type Required Rules
limit query integer No 1 to 500, default 100
cursor query string No up to 200 characters
curl "https://nodelodge.com/v1/hosts" \
  -b cookies.txt

POST /v1/hosts/enrollment-codes

Create a one-time code to pair a machine.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
hostName string Yes up to 80 characters
curl -X POST "https://nodelodge.com/v1/hosts/enrollment-codes" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"hostName":"garage-4090"}'

GET /v1/hosts/{hostId}

Read one of your machines.

Authentication: A console session.

Name In Type Required Rules
hostId path UUID Yes
curl "https://nodelodge.com/v1/hosts/$HOST_ID" \
  -b cookies.txt

DELETE /v1/hosts/{hostId}

Remove a revoked machine from your lists.

Authentication: A console session.

Name In Type Required Rules
hostId path UUID Yes
curl -X DELETE "https://nodelodge.com/v1/hosts/$HOST_ID" \
  -b cookies.txt

POST /v1/hosts/{hostId}/{action}

Disable, enable or revoke a machine.

Authentication: A console session.

Name In Type Required Rules
hostId path UUID Yes
action path disable, enable, revoke Yes
curl -X POST "https://nodelodge.com/v1/hosts/$HOST_ID/disable" \
  -b cookies.txt

Offers (providers)

GET /v1/hosts/{hostId}/offer

Read a machine’s offer.

Authentication: A console session.

Name In Type Required Rules
hostId path UUID Yes
curl "https://nodelodge.com/v1/hosts/$HOST_ID/offer" \
  -b cookies.txt

PUT /v1/hosts/{hostId}/offer

Set a machine’s hourly rate, region and booking limits.

Authentication: A console session.

Name In Type Required Rules
hostId path UUID Yes

Request body (JSON):

Field Type Required Rules
pricePerHourCents integer Yes 1 to 1000000
regionCode string Yes
minHours integer No 1 to 720, default 1
maxHours integer No 1 to 720, default 24
curl -X PUT "https://nodelodge.com/v1/hosts/$HOST_ID/offer" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"pricePerHourCents":150,"regionCode":"CA-QC"}'

POST /v1/hosts/{hostId}/offer/{action}

Publish or unpublish a machine’s offer.

Authentication: A console session.

Name In Type Required Rules
hostId path UUID Yes
action path publish, unpublish Yes
curl -X POST "https://nodelodge.com/v1/hosts/$HOST_ID/offer/publish" \
  -b cookies.txt

Notifications

GET /v1/notifications

List your notifications.

Authentication: A console session.

Name In Type Required Rules
limit query integer No 1 to 100, default 20
cursor query string No up to 200 characters
unread query true, false No default "false"
curl "https://nodelodge.com/v1/notifications" \
  -b cookies.txt

GET /v1/notifications/preferences

Read your notification settings.

Authentication: A console session.

curl "https://nodelodge.com/v1/notifications/preferences" \
  -b cookies.txt

PUT /v1/notifications/preferences

Change your notification settings.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
types array of object No up to 31 items
creditLowThresholdCents integer No
curl -X PUT "https://nodelodge.com/v1/notifications/preferences" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"types":[{"type":"session.ending_soon","email":false}]}'

POST /v1/notifications/read-all

Mark every notification as read.

Authentication: A console session.

curl -X POST "https://nodelodge.com/v1/notifications/read-all" \
  -b cookies.txt

GET /v1/notifications/unread-count

Count your unread notifications.

Authentication: A console session.

curl "https://nodelodge.com/v1/notifications/unread-count" \
  -b cookies.txt

POST /v1/notifications/unsubscribe

Stop a type of email, from the link in that email.

Authentication: None.

Name In Type Required Rules
token query string No up to 100 characters

Request body (JSON):

Field Type Required Rules
token string No up to 100 characters
List-Unsubscribe One-Click No
curl -X POST "https://nodelodge.com/v1/notifications/unsubscribe" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_FROM_THE_EMAIL_LINK"}'

POST /v1/notifications/{id}/read

Mark one notification as read.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl -X POST "https://nodelodge.com/v1/notifications/$NOTIFICATION_ID/read" \
  -b cookies.txt

Activity

GET /v1/audit-events

List your organization’s activity.

Authentication: A console session.

Name In Type Required Rules
limit query integer No 1 to 200, default 50
curl "https://nodelodge.com/v1/audit-events" \
  -b cookies.txt

Support

POST /v1/public/abuse-reports

Report abuse of a Node Lodge machine, without an account.

Authentication: None.

Request body (JSON):

Field Type Required Rules
email email address Yes up to 254 characters
name string No up to 120 characters
kind malware, phishing, spam, network_attack, copyright, illegal_content, other Yes
target string Yes 3 characters or more, up to 500 characters
description string Yes 20 characters or more, up to 5000 characters
evidence string No up to 2000 characters
website string No up to 500 characters
elapsedMs integer Yes 0 to 86400000
proof object Yes
curl -X POST "https://nodelodge.com/v1/public/abuse-reports" \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com","kind":"phishing","target":"https://example.com/login","description":"A login page imitating a bank is served from this address.","website":"","elapsedMs":12000,"proof":{"salt":"abababababababababababab","challenge":"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd","number":48211,"expiresAt":"2026-11-06T10:10:00.000Z","signature":"efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef"}}'

GET /v1/public/abuse/challenge

Get the proof-of-work challenge the abuse report form solves before sending.

Authentication: None.

curl "https://nodelodge.com/v1/public/abuse/challenge"

POST /v1/support/attachments

Get a 5-minute upload link for a file to attach (PNG, JPEG, WebP, PDF, text, JSON, CSV, 10 MB at most).

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
ticketId UUID No
fileName string Yes up to 255 characters
contentType string Yes up to 100 characters
sizeBytes integer Yes 1 to 10485760
curl -X POST "https://nodelodge.com/v1/support/attachments" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"fileName":"text","contentType":"text","sizeBytes":1}'

GET /v1/support/attachments/{id}

Get a 60-second download link for an attachment.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/support/attachments/$ATTACHMENT_ID" \
  -b cookies.txt

GET /v1/support/options

List the sessions and payments a support request can point at.

Authentication: A console session.

curl "https://nodelodge.com/v1/support/options" \
  -b cookies.txt

GET /v1/support/tickets

List your support requests, most recently active first. Owners and admins see every request of the organization.

Authentication: A console session.

Name In Type Required Rules
limit query integer No 1 to 100, default 50
cursor query string No up to 200 characters
status query open, waiting_on_customer, resolved, closed No
curl "https://nodelodge.com/v1/support/tickets" \
  -b cookies.txt

POST /v1/support/tickets

Open a support request, optionally about a session or a payment of your organization.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
category limit_increase, billing, technical, account_security, abuse Yes
subject string Yes 3 characters or more, up to 200 characters
body string Yes up to 10000 characters
sessionId UUID No
paymentId UUID No
errorReference string No up to 64 characters
requestedTier 1 or 2 or 3 No
attachmentIds array of UUID No up to 5 items
followUpOf UUID No
curl -X POST "https://nodelodge.com/v1/support/tickets" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"category":"technical","subject":"Jupyter does not open","body":"The session is ready but the notebook page stays blank."}'

GET /v1/support/tickets/{id}

Read a support request and its messages.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl "https://nodelodge.com/v1/support/tickets/$TICKET_ID" \
  -b cookies.txt

POST /v1/support/tickets/{id}/messages

Reply to a support request. A reply to a resolved request reopens it within 14 days.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes

Request body (JSON):

Field Type Required Rules
body string Yes up to 10000 characters
attachmentIds array of UUID No up to 5 items
curl -X POST "https://nodelodge.com/v1/support/tickets/$TICKET_ID/messages" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"body":"text"}'

POST /v1/support/tickets/{id}/rating

Rate the answer to a resolved request.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes

Request body (JSON):

Field Type Required Rules
rating good, bad Yes
comment string No up to 1000 characters
curl -X POST "https://nodelodge.com/v1/support/tickets/$TICKET_ID/rating" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"rating":"good"}'

POST /v1/support/tickets/{id}/reopen

Reopen a resolved request, within 14 days of its resolution.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl -X POST "https://nodelodge.com/v1/support/tickets/$TICKET_ID/reopen" \
  -b cookies.txt

POST /v1/support/tickets/{id}/resolve

Mark a support request as resolved.

Authentication: A console session.

Name In Type Required Rules
id path UUID Yes
curl -X POST "https://nodelodge.com/v1/support/tickets/$TICKET_ID/resolve" \
  -b cookies.txt

Public site

POST /v1/access-requests

Request access to Node Lodge.

Authentication: None.

Request body (JSON):

Field Type Required Rules
email email address Yes up to 254 characters
company string No up to 120 characters
role renter, provider Yes
useCase string Yes
website string No up to 500 characters
curl -X POST "https://nodelodge.com/v1/access-requests" \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com","role":"renter","useCase":"Fine-tune a 7B model overnight"}'

POST /v1/newsletter

Subscribe to the newsletter.

Authentication: None.

Request body (JSON):

Field Type Required Rules
email string Yes up to 254 characters
locale en, fr, de, es No
curl -X POST "https://nodelodge.com/v1/newsletter" \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com"}'

POST /v1/newsletter/confirm

Confirm a newsletter subscription.

Authentication: None.

Request body (JSON):

Field Type Required Rules
token string Yes up to 200 characters
curl -X POST "https://nodelodge.com/v1/newsletter/confirm" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_FROM_THE_EMAIL_LINK"}'

POST /v1/newsletter/unsubscribe

Unsubscribe from the newsletter.

Authentication: None.

Name In Type Required Rules
token query string No up to 200 characters

Request body (JSON):

Field Type Required Rules
token string No up to 200 characters
List-Unsubscribe One-Click No
curl -X POST "https://nodelodge.com/v1/newsletter/unsubscribe" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_FROM_THE_EMAIL_LINK"}'

GET /v1/public/gpus

List the GPU models on offer, as the public site shows them.

Authentication: None.

curl "https://nodelodge.com/v1/public/gpus"

Other

POST /v1/smart-launch/recommend

Recommend machines for a workload, with the reasons and their limits.

Authentication: A console session.

Request body (JSON):

Field Type Required Rules
useCase run_model, fine_tune, generate_images, notebook Yes
modelId string No up to 80 characters
quantization fp16, int8, int4 No default "fp16"
contextTokens integer No 1 to 1048576, default 4096
concurrency integer No 1 to 256, default 1
minVramGb integer No 1 to 1024
budgetUsd number No at most 1000000
maxPricePerHourUsd number No at most 10000
tier secure, community, either No default "either"
countries array of string No up to 40 items, default []
curl -X POST "https://nodelodge.com/v1/smart-launch/recommend" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"useCase":"run_model"}'

Last updated View as Markdown

Results appear as you type. Arrow keys move through them.