Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
API ReferenceComputeVMs

Get a VM's console log tail

Returns the tail of a VM's serial console, capped to a bounded size; a VM with no logs yet answers 200 with found false and a message, not an error. A transient state (no allocation yet, logs temporarily unavailable) answers 200 with found false, so a polling UI renders a state instead of an error. The cap is the one pod logs use, so a long-running console never exceeds the response size orl reads. Also works for pods: `orl vms logs` and `orl pods logs` are the same operation pair with different id params, and `orl vms <verb> <pod-id>` reaches every other pod lifecycle command.

Required permission

Requires the compute.read permission. See Permissions for the roles and API key permissions that include it.

Command line

The orl CLI wraps this endpoint:

orl vms log get <vm-id>
GET
/api/nomad/vms/{vmId}/logs

Authorization

apiKey
headerAuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).

Path Parameters

vmId*string

Response Body

OK

application/json
  1. response

A guest's console text, or a soft "not ready yet" status: a transient state (no allocation yet, logs temporarily unavailable) answers 200 with found false and a message, so a polling UI renders a state instead of an error toast; only ownership/existence failures are 404. Output is capped to a bounded tail (the same cap pods and VMs share), not the whole console.

found*boolean
content?string

The console's tail, when found is true.

message?string

Present when found is false (or on other soft states); human-readable.

Example Request
curl -X GET 'https://api.openrelay.inc/api/nomad/vms/string/logs'
Example Response
{  "found": true,  "content": "string",  "message": "string"}