---
title: "Get nodes assigned to machine request"
method: GET
path: "/machine-requests/{request_id}/executors"
tags: ["General APIs with JWT"]
---

# Get nodes assigned to machine request

`GET /machine-requests/{request_id}/executors`

Endpoint to get all nodes assigned to a machine request.

## Path parameters

- `request_id` string, uuid, required

## Response `200`

List of nodes assigned to the machine request

- ExecutorOutput[]
  - `id` string, uuid
  - `created_at` string, date-time
  - `updated_at` string, date-time, nullable
  - `miner_hotkey` string, required
  - `miner_coldkey` string, nullable
  - `validator_hotkey` string, required
  - `executor_id` string, uuid, required
  - `executor_ip_address` string, required
  - `executor_ip_port` string, required
  - `executor_ssh_port` string, nullable
  - `specs` MachineSpecsOutput, required
    - `gpu` GpuSpec, required
      - `count` integer, required
      - `driver` string, nullable
      - `cuda_driver` integer, nullable
      - `details` GpuDetail[], required
        - `name` string, required
        - `cuda` string, required
        - `power_limit` integer, required
        - `power_default_limit` integer, nullable
        - `power_max_limit` integer, nullable
        - `graphics_speed` integer, required
        - `memory_speed` integer, required
        - `pcie` integer, nullable
        - `pcie_speed` integer, nullable
        - `capacity` integer, required
        - `gpu_utilization` number, nullable
        - `memory_utilization` number, nullable
        - `memory_used_mb` number, nullable
        - `uuid` string, required
    - `cpu` CpuSpec, required
      - `count` integer, required
      - `model` string, required
      - `utilization` number, nullable
    - `ram` MemorySpec, required
      - `total` number, required
      - `used` number, required
      - `free` number, required
      - `available` number, nullable
      - `utilization` number, nullable
    - `hard_disk` HardDiskSpec
      - `total` integer, required
      - `used` integer, required
      - `free` integer, required
      - `utilization` number, nullable
      - `images` integer, nullable
      - `containers` integer, nullable
      - `volumes` integer, nullable
    - `os` string, nullable
    - `kernel` string, nullable
    - `kernel_scrape_error` string, nullable
    - `network` NetworkSpec
      - `upload_speed` number, nullable
      - `download_speed` number, nullable
      - `verifyx_download_speed` number, nullable
      - `ema_download_speed` number, nullable
      - `ema_upload_speed` number, nullable
      - `ema_verifyx_download_speed` number, nullable
      - `ema_verifyx_upload_speed` number, nullable
    - `md5_checksums` Checksums
      - `nvidia_smi` string, nullable
      - `libnvidia_ml` string, nullable
      - `docker` string, nullable
    - `docker` DockerSpec
      - `version` string, nullable
      - `container_id` string, nullable
      - `containers` object[], nullable
      - `host_cpu_percent` number, nullable
    - `gpu_processes` object[], nullable
    - `available_port_maps` array[], nullable
      - unknown[]
        - unknown
    - `available_port_count` integer, nullable
    - `sysbox_runtime` boolean, nullable
    - `storage_limit_supported` boolean, nullable
    - `ncu_profiling_access` string, nullable
    - `ncu_profiling_scrape_error` string, nullable
    - `container_cap_eff` string, nullable
    - `nvidiactl_owner_uid` integer, nullable
    - `power_cap_probe_error` string, nullable
    - `boot_id` string, nullable
    - `port_range` string, nullable
    - `port_mappings` string, nullable
    - `verified_ports` integer[], nullable
    - `tdx_attestation_passed` boolean, nullable
    - `tdx_host_supported` boolean, nullable
    - `is_spot` boolean, nullable
    - `gpu_metrics` GpuMetrics — FP32 throughput metrics from libdmcompverify.so getMetrics() (device-0 representative). All fields are optional: the .so may emit a subset, and the whole object is absent when TFLOPS benchmarking is disabled or fails (fail-safe). CONTRACT OBLIGATION: this model mirrors getMetrics() output. Because MachineSpecs has `extra` unset (Pydantic defaults to ignore -> undeclared keys are stripped on validation), any NEW field that libdmcompverify.so's getMetrics() starts emitting MUST be added here too, or it is silently dropped on coercion. Adding the field here is the documented way to surface it; failing to do so is a silent-strip data-loss bug, not a crash.
      - `device` string, nullable
      - `cc` string, nullable
      - `sm_count` integer, nullable
      - `clock_mhz` integer, nullable
      - `vram_gb` number, nullable
      - `n` integer, nullable
      - `fp32_tflops` number, nullable
      - `fp32_median_tflops` number, nullable
      - `fp32_cov_pct` number, nullable
    - `infiniband_ports` InfinibandPortSpec[], nullable
      - `device` string, nullable
      - `port` string, nullable
      - `node_guid` string, nullable
      - `sys_image_guid` string, nullable
      - `link_layer` string, nullable
      - `state` string, nullable
      - `phys_state` string, nullable
      - `rate` string, nullable
      - `lid` string, nullable
      - `sm_lid` string, nullable
      - `pkey` string, nullable
      - `gids` string[], nullable
    - `infiniband_scrape_error` string, nullable
    - `roce_link_measurements` RoceLinkMeasurementSpecOutput[], nullable
      - `peer_executor_uuid` string, required
      - `peer_address` string, required
      - `gigabits_per_second` number, nullable
      - `measured_at` string, required
    - `provider_side_load` ProviderSideLoadSpec — DAH-2734: what the machine's OWNER consumes outside Lium's containers. The validator computes it and sends it with the specs, so the fleet cut is a plain JSON read. Each part is None when the scrape could not measure it that cycle - never a guess.
      - `cpu_cores` number, nullable
      - `disk_kb` integer, nullable
    - `gpu_power_cap_capable` boolean, nullable, required
  - `active` boolean
  - `machine_name` string, nullable, required
  - `price_per_hour` number, nullable
  - `price_per_gpu` number, nullable
  - `gpu_count` integer, nullable
  - `available_gpu_count` integer, nullable
  - `gpu_uuid_anchor` string, nullable — Smallest normalized GPU UUID on this machine; stable hardware anchor across hotkey/IP rotation
  - `location_id` string, nullable, required
  - `finished_jobs` integer
  - `uptime_in_minutes` integer, nullable
  - `collateral_deposited` boolean, nullable
  - `rental_check_verified_status` string, nullable
  - `verified` boolean
  - `verified_date` string, date-time, nullable
  - `rental_verification_ssh_key_available` boolean, nullable — Whether rental verification SSH key was available in the subnet SSH keys
  - `reclaimed` boolean
  - `reclaimed_at` string, date-time, nullable
  - `is_responsive` boolean, nullable — Whether executor responds to health checks
  - `pending_price_per_hour` number, nullable — Pending price per hour that will be applied when price_change_effective_date is reached
  - `price_change_effective_date` string, date-time, nullable — Date when the pending price change will become effective

## Other responses

- `404` — Request not found
- `422` — Validation Error
- `500` — Internal server error

---

[API](https://skmtc.dev/lium/apis/lium-backend-api.md) · [All operations](https://skmtc.dev/lium/apis/lium-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lium/lium-backend-api/revisions/57db0a9348db/schema)
