changedInput schema / properties / budget_usd_hr / description
Previous value: -"Only recommend configs at or under this hourly budget."New value: +"Hard limit on the hourly price of the whole configuration, in USD. Configurations above it are not returned."
addedInput schema / properties / duration_hours
Added value: +{
+ "description": "How long the job will run, in hours (fractions are fine). When sent, each match carries billed_hours and estimated_total_usd.",
+ "type": "number"
+}
addedInput schema / properties / max_quote_age_minutes
Added value: +{
+ "description": "Hard limit on how old a price quote may be, in minutes. Configurations whose price was fetched from the provider longer ago are not returned.",
+ "type": "number"
+}
addedInput schema / properties / max_total_usd
Added value: +{
+ "description": "Hard limit on estimated_total_usd, the GPU rental cost of the whole job, in USD. Needs duration_hours. Configurations above it are not returned.",
+ "type": "number"
+}
addedOutput schema / properties / as_of
Added value: +{
+ "description": "When this answer was computed (ISO 8601). Quote ages are measured against it.",
+ "type": "string"
+}
addedOutput schema / properties / error
Added value: +{
+ "description": "Present when the request was not valid; says what to send instead.",
+ "type": "string"
+}
addedOutput schema / properties / limits
Added value: +{
+ "description": "The hard limits this answer applied (null when one was not sent) and how many configurations each one left out.",
+ "properties": {
+ "budget_usd_hr": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "duration_hours": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "excluded": {
+ "properties": {
+ "older_than_max_quote_age_minutes": {
+ "type": "integer"
+ },
+ "over_budget_usd_hr": {
+ "type": "integer"
+ },
+ "over_max_total_usd": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "max_quote_age_minutes": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "max_total_usd": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "nearest_excluded": {
+ "description": "When the limits leave no match: the cheapest configuration that can still run the job, and the limits it breaks.",
+ "properties": {
+ "billed_hours": {
+ "description": "Hours the provider bills for duration_hours: rounded up to whole hours on a per-hour meter and to whole minutes on a per-minute meter. Null when duration_hours was not sent.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "billing_increment": {
+ "description": "How this provider's meter ticks for on-demand rental; varies means FastGPU has no verified figure.",
+ "enum": [
+ "per-second",
+ "per-minute",
+ "per-hour",
+ "varies"
+ ],
+ "type": "string"
+ },
+ "breaks": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "effective_usd_hr": {
+ "type": "number"
+ },
+ "estimated_total_usd": {
+ "description": "effective_usd_hr times billed_hours, rounded up to the cent. GPU rental only: storage, data transfer, CPU and memory billed separately, and provider minimums are not included. Null when duration_hours was not sent.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "fetched_at": {
+ "description": "When this price was fetched from the provider (ISO 8601).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fits_single_card": {
+ "type": "boolean"
+ },
+ "gpu": {
+ "type": "string"
+ },
+ "gpu_count": {
+ "type": "integer"
+ },
+ "monthly_usd": {
+ "type": "number"
+ },
+ "offer_type": {
+ "type": "string"
+ },
+ "over_budget": {
+ "type": "boolean"
+ },
+ "page_url": {
+ "description": "Absolute URL of this GPU's live price page, with every live offer.",
+ "type": "string"
+ },
+ "partner": {
+ "type": "boolean"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "provider_label": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "quote_age_seconds": {
+ "description": "Seconds between fetched_at and as_of. Null when the fetch time is unknown.",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "reason": {
+ "type": "string"
+ },
+ "reliability": {
+ "type": "string"
+ },
+ "score": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "tokens_per_sec": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "url": {
+ "description": "Site-relative path of this GPU's live price page, e.g. /gpus/h100-sxm.",
+ "type": "string"
+ },
+ "usd_per_million_tokens": {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+}
addedOutput schema / properties / matches / items / properties / billed_hours
Added value: +{
+ "description": "Hours the provider bills for duration_hours: rounded up to whole hours on a per-hour meter and to whole minutes on a per-minute meter. Null when duration_hours was not sent.",
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / matches / items / properties / billing_increment
Added value: +{
+ "description": "How this provider's meter ticks for on-demand rental; varies means FastGPU has no verified figure.",
+ "enum": [
+ "per-second",
+ "per-minute",
+ "per-hour",
+ "varies"
+ ],
+ "type": "string"
+}
addedOutput schema / properties / matches / items / properties / estimated_total_usd
Added value: +{
+ "description": "effective_usd_hr times billed_hours, rounded up to the cent. GPU rental only: storage, data transfer, CPU and memory billed separately, and provider minimums are not included. Null when duration_hours was not sent.",
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / matches / items / properties / fetched_at
Added value: +{
+ "description": "When this price was fetched from the provider (ISO 8601).",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / matches / items / properties / quote_age_seconds
Added value: +{
+ "description": "Seconds between fetched_at and as_of. Null when the fetch time is unknown.",
+ "type": [
+ "integer",
+ "null"
+ ]
+}
addedOutput schema / properties / note
Added value: +{
+ "description": "Why there are no matches, when there are none.",
+ "type": "string"
+}
addedOutput schema / properties / workload / properties / gpu_vendors
Added value: +{
+ "items": {
+ "type": "string"
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+}