Skip to content

GET /api/v1/hosts/machines/{id}

Operation: getMachine.

Machine detail: compatibility findings, current offer/job, observed metrics, drain state (host owner/admin)

Includes telemetry: the latest agent-reported sample plus observed_at, age_s and boot_id, or null when nothing was ever reported. Telemetry is evidence only and never influences admission, qualification, billing or job state. A measurement the host could not take is ABSENT from the object — it is never rendered as 0 and never carried over from an earlier sample, so a consumer must age it via age_s and show unknown when stale.

GET https://amplerun-api.spiry.org/api/v1/hosts/machines/{id}

Use the credential and scope required by this operation. For programmatic renter/host calls: Authorization: Bearer $AMPLERUN_API_KEY. A host-agent signature or other specialized proof is required where the description specifies it.

NameLocationPresenceTypeDescription
idpathRequiredUUID

Machine detail.

application/json

FieldTypePresenceDescription
accepts_custom_imagesbooleanOptionalThe host’s opt-in to renter-supplied public images on this machine (default false).
tier“container” / “inference”OptionalTier A (renter containers) or Tier B (managed inference), set at enrollment.
host_modeobjectOptionalD-22 host mode as the last heartbeat reported it; null until one does.
kernel_driver_runtimestringOptionalKernel/driver/runtime triple from the manifest, e.g. linux-6.8/nvidia-560.35/cuda-12.6.
recent_jobsarray of objectOptionalThe machine’s latest 20 rentals, newest first. ended_at is null while a rental is open.
listing_blockersarray of stringOptional
market_priceobjectOptionalD-35 suggested listing price: the market price a renter pays for ONE of this GPU for one hour. basis amplerun = AmpleRun’s own listed offers of this model (at least 3); otherwise basis reference = a hand-curated table of official public list prices, each with its page and the date it was read (upper side, p75); otherwise basis throughput = each reference row of the same class (consumer or datacenter) turned into the price giving this GPU the same tokens per dollar, from memory bandwidth (LLM token generation is memory-bound), and the p75 of those. Renters pay the listed price (the 10% commission comes out of it), so the suggestion is the market price itself. null when neither exists. A suggestion only: the host sets its own price.
auto_qualifyobjectOptionalThe automatic machine test: the worker queues it while the agent heartbeats, retries failures with backoff, and admits a passed machine with a listed offer. reason is set for retrying and needs_attention.
telemetryschemaOptional
{
"type": "object",
"properties": {
"accepts_custom_images": {
"type": "boolean",
"description": "The host's opt-in to renter-supplied public images on this machine (default false)."
},
"tier": {
"type": "string",
"enum": [
"container",
"inference"
],
"description": "Tier A (renter containers) or Tier B (managed inference), set at enrollment."
},
"host_mode": {
"nullable": true,
"description": "D-22 host mode as the last heartbeat reported it; null until one does.",
"type": "object",
"properties": {
"mode": {
"type": "string",
"nullable": true,
"enum": [
"dedicated",
"idle",
"colisted"
]
},
"offerable": {
"type": "boolean",
"nullable": true
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"observed_at": {
"type": "string"
}
}
},
"kernel_driver_runtime": {
"type": "string",
"nullable": true,
"description": "Kernel/driver/runtime triple from the manifest, e.g. linux-6.8/nvidia-560.35/cuda-12.6."
},
"recent_jobs": {
"type": "array",
"description": "The machine's latest 20 rentals, newest first. ended_at is null while a rental is open.",
"items": {
"type": "object",
"required": [
"job_id",
"state",
"started_at",
"ended_at",
"rate_micro_per_hour"
],
"properties": {
"job_id": {
"$ref": "#/components/schemas/UUID"
},
"state": {
"type": "string"
},
"started_at": {
"$ref": "#/components/schemas/Rfc3339Utc"
},
"ended_at": {
"allOf": [
{
"$ref": "#/components/schemas/Rfc3339Utc"
}
],
"nullable": true
},
"rate_micro_per_hour": {
"type": "string"
},
"ready": {
"type": "boolean",
"description": "False when the host never reached READY (a refused START): nothing ran and nothing was billed."
},
"billed_ms": {
"type": "string",
"description": "Metered (billed) runtime in ms, from READY."
},
"earned_micro": {
"type": "string",
"description": "The host's posted share for this rental, micro-USD."
}
}
}
},
"listing_blockers": {
"type": "array",
"items": {
"type": "string"
}
},
"market_price": {
"nullable": true,
"type": "object",
"description": "D-35 suggested listing price: the market price a renter pays for ONE of this GPU for one hour. basis amplerun = AmpleRun's own listed offers of this model (at least 3); otherwise basis reference = a hand-curated table of official public list prices, each with its page and the date it was read (upper side, p75); otherwise basis throughput = each reference row of the same class (consumer or datacenter) turned into the price giving this GPU the same tokens per dollar, from memory bandwidth (LLM token generation is memory-bound), and the p75 of those. Renters pay the listed price (the 10% commission comes out of it), so the suggestion is the market price itself. null when neither exists. A suggestion only: the host sets its own price.",
"required": [
"gpu_model",
"basis",
"median_micro_per_gpu_hour",
"sample_size",
"sources"
],
"properties": {
"gpu_model": {
"type": "string",
"description": "Canonical GPU name the prices were matched to."
},
"basis": {
"enum": [
"amplerun",
"reference",
"throughput"
]
},
"median_micro_per_gpu_hour": {
"type": "string",
"description": "Decimal string, micro-USD per GPU per hour."
},
"sample_size": {
"type": "integer",
"description": "Listings or reference prices behind the median."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"url",
"accessed"
],
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string",
"description": "Page where the price can be checked."
},
"accessed": {
"type": "string",
"description": "YYYY-MM-DD the price was read."
}
}
}
},
"estimate": {
"nullable": true,
"type": "object",
"description": "ESTIMATED from memory bandwidth, not measured on this machine. null when the GPU's bandwidth is unknown.",
"required": [
"tok_s_8b",
"micro_per_million_tokens",
"fits_up_to_b_params"
],
"properties": {
"tok_s_8b": {
"type": "number",
"description": "Estimated generation speed on an 8B Q4_K_M model, tokens/s."
},
"micro_per_million_tokens": {
"type": "string",
"description": "The per-GPU-hour price per 1M generated tokens at that speed, micro-USD."
},
"fits_up_to_b_params": {
"type": "integer",
"description": "Largest model that fits, billions of parameters at Q4."
}
}
}
}
},
"auto_qualify": {
"type": "object",
"description": "The automatic machine test: the worker queues it while the agent heartbeats, retries failures with backoff, and admits a passed machine with a listed offer. reason is set for retrying and needs_attention.",
"required": [
"state",
"reason"
],
"properties": {
"state": {
"type": "string",
"enum": [
"testing",
"passed",
"retrying",
"needs_attention",
"waiting"
]
},
"reason": {
"type": "string",
"nullable": true
}
}
},
"telemetry": {
"nullable": true,
"allOf": [
{
"$ref": "#/components/schemas/TelemetrySample"
},
{
"type": "object",
"required": [
"observed_at",
"age_s",
"boot_id"
],
"properties": {
"observed_at": {
"$ref": "#/components/schemas/Rfc3339Utc"
},
"age_s": {
"type": "integer",
"minimum": 0
},
"boot_id": {
"type": "string"
}
}
}
]
}
}
}

Error envelope. 401 unauthenticated, 403/404 forbidden, 409 conflict, 422 invalid input, 429 rate limited (code UNAVAILABLE, retryable:true, no Retry-After header), 503 unavailable money/provider state with retryable:true.

application/json

FieldTypePresenceDescription
errorobjectRequired
{
"$ref": "#/components/schemas/ErrorEnvelope"
}

Replace path/query placeholders and provide the required JSON body, headers and credential from the sections above. This is a request outline, not a command that chooses an amount or starts a rental for you.

Terminal window
curl --request GET 'https://amplerun-api.spiry.org/api/v1/hosts/machines/{id}' \
--header "Authorization: Bearer $AMPLERUN_API_KEY"

Schema definitions · Download OpenAPI · Authentication · Errors and recovery

Official AmpleRun documentation · Contract v3 · Generated from the API contract · Revision 52fe29de · Open AmpleRun · View Markdown · For agents