nodes

Expose a container port at a public HTTPS URL

Expose a port on a RUNNING node at a public HTTPS URL, so anything that can curl can reach a server inside the node (TensorBoard, Jupyter, a vLLM endpoint serving a model to a judge). Returns {endpoint_id, url, port, auth, expires_at}. Default auth is the capability URL itself: anyone holding the URL reaches the port, so treat it like a secret. auth:"bearer" additionally requires Authorization: Bearer <token> at the edge; the token rides the response ONCE and is never shown again. The endpoint is bound to the node's current container: node stop kills it, and a wake never resurrects it (re-call expose_port for a fresh URL). Traffic through the endpoint does NOT keep the node awake and is not billed; the server process (a detached run_command) is what holds the node running. Re-calling for an already-exposed port is idempotent: same URL, refreshed expiry. This tool never wakes a stopped node. A run_command wakes it, and the wake bills. Then call expose_port. Raw byte pipe behind the URL: streaming, SSE, and WebSocket all pass through. vanity: "<label>" additionally claims a human-readable hostname (https://<label>.<ingress host>) beside the capability URL - a PUBLIC alias, reachable by name with no secret (bearer auth still enforced), global first-come, freed when the endpoint dies; the same vanity on a re-expose keeps the name.

post/preview/nodes/{name}/endpoints

Request

  • Base URL: https://autoresearch.sfcompute.com
  • URL: https://autoresearch.sfcompute.com/preview/nodes/{name}/endpoints
  • Auth: HTTP bearer

Path parameters

namestring required

Node name (from list_nodes).

Query parameters

workspacestring

Act in this workspace (its slug). Omitted: the token's bound workspace, then the organization's default. Never ambient - there is no switch-workspace mutation on this door.

Request body

authstring nullable

"capability-url" (default: anyone holding the returned URL reaches the port) or "bearer" (additionally require Authorization: Bearer <token> at the edge; the token is returned once).

portinteger required

The container port to expose (1024–65535).

vanitystring nullable

Claim a vanity hostname for this endpoint: a DNS label (lowercase letters, digits, '-'; 3-63 chars) served at https://<vanity>.<ingress host> beside the capability URL. A vanity name is GUESSABLE, so claiming one deliberately makes the port reachable by name alone (auth "bearer" still enforces its token at the edge). The namespace is global and first-come; reserved words and product prefixes are refused. The label frees when the endpoint dies (stop, expiry, unexpose_port); idempotent re-expose with the same vanity keeps it.

Response

The capability's JSON result.

objectstring

The resource type, when the result is one resource.

Changes

No recorded changes to this operation across all 1 revision of this API.