Public data API

InferenceX API reference

Read benchmark, provenance, dataset, CollectiveX, and diagnostic data from the same sources that power InferenceX.

Machine-readable contract

OpenAPI 3.1 JSON

Inspect the canonical schema or pass it directly to your tooling.

Open OpenAPI JSON
Specification
v1 · OpenAPI 3.1
Authentication
AuthenticationPublished read endpoints do not require authentication.
Response format
Response formatResponses are JSON unless an endpoint explicitly documents CSV. Dates use YYYY-MM-DD and timestamps use UTC ISO 8601.
Base URL
https://inferencex.semianalysis.com

01 / Quickstart

Quickstart

Move from contract discovery to a real response in a few steps.

  1. 01

    Discover configurations

    Start with availability to choose real model, hardware, framework, and sequence values.

    Discover configurations
    curl "https://inferencex.semianalysis.com/api/v1/availability"
  2. 02

    Fetch benchmark rows

    Then request the latest raw benchmark rows for a supported display model.

    Fetch benchmark rows
    curl "https://inferencex.semianalysis.com/api/v1/benchmarks?model=DeepSeek-R1-0528"
Skill version · 0.11.0

Use the API with your agent

The inferencex-api skill helps your agent navigate the public API: benchmarks, provenance, datasets, CollectiveX, and diagnostics. Validated single-turn PowerX export is the first worked example.

@semianalysisai/inferencex-skills

Requires Node 24 or later with npm and Codex or Claude Code. Installation and API queries require internet access.

Queries use the public API without database credentials. The separate MCP server has its own setup; this skill does not require or reconfigure it.

Install in your project

Run the command for your agent from your project directory, then start an agent session in that project.

Codex
npm exec --yes --package @semianalysisai/inferencex-skills@0.11.0 -- inferencex-skills install --target codex
Claude Code
npm exec --yes --package @semianalysisai/inferencex-skills@0.11.0 -- inferencex-skills install --target claude

To upgrade, replace the version in the installation command with a new published version and rerun it with --force. Existing skills are otherwise skipped. Save local edits first: --force overwrites matching files and retains obsolete files.

To check the copied skill version, replace install with status in the command above and keep the same --target. Installer version identifies the installer; Installed version identifies the copied skill. Older installations may report unknown.

Usage examples
First example: measured PowerX
Use inferencex-api to export latest available measured PowerX data for DeepSeek-V4-Pro:
- Select single-turn requests with exactly 8192 input and 1024 output tokens; require strictV2.
- Create powerx.csv and powerx.json with the installed exporter, outside the InferenceX repository.
- Keep measured per-GPU watts and whole-deployment GPU energy distinct from provisioned-power estimates.
- Preserve raw model keys, source IDs/URLs, measurement dates, and separate snapshot metadata.
- Record the request URL, retrieval time, package version, local filters, and returned/selected counts.
- Explain why rows were excluded and list missing requested metrics.
- Keep missing metrics unavailable and genuine zeros unchanged. Explain empty results without inferring that all benchmarks are absent.
PowerX cookbook and direct export

Open the cookbook at the installed path below for validity, units, missing-data handling, and provenance. The bundled Node 24 exporter also runs directly from your project, without an InferenceX checkout or database credentials.

Codex
.agents/skills/inferencex-api/references/powerx.md
Claude Code
.claude/skills/inferencex-api/references/powerx.md
Run the installed exporter (Codex)
node .agents/skills/inferencex-api/scripts/export-powerx.mjs \
  --model DeepSeek-V4-Pro --isl 8192 --osl 1024 \
  --format csv --output powerx.csv 2> powerx-report.log

For Claude Code, use the .claude/skills/inferencex-api path. For JSON, use --format json --output powerx.json. Omit --date for latest available observations, or add --date YYYY-MM-DD for an as-of cutoff. Keep the report log: it records request and coverage metadata even for an empty CSV.

avg_power_w is measured mean watts per GPU. Schema-v2 joules metrics without a role prefix describe whole-deployment GPU energy; prefill/decode-prefixed energy is role-local. These are existing observations, not new benchmark runs or facility-energy measurements.

02 / Conventions

Conventions

Shared request, error, and cache behavior for the supported surface.

Errors
JSON errors contain an error string. A 400 response means a parameter is missing or invalid, 404 means the requested record is absent, and 500 means the server query failed.
Caching
Read endpoints may be served from shared caches. CollectiveX uses short refresh windows, and framework releases use a one-hour shared cache.
Identifiers
Benchmark result IDs and GitHub run IDs are positive integers. Bulk diagnostic endpoints accept comma-separated, deduplicated IDs.

03 / Schema

BenchmarkRow and metrics

Interpret the primary benchmark payload and its measured fields.

BenchmarkRow

Configuration fields sit beside a metrics map. Time metrics are seconds. Throughput fields ending in _per_gpu retain their legacy names but measure tokens per second per physical chip, including TPUs. num_prefill_gpu and num_decode_gpu count physical chips independently of logical TP; aggregate engines may mirror one count in both columns, so only disaggregated counts should be summed. Optional metrics.dp records data parallelism when supplied. For a P99 inter-token latency requirement, compare p99_itl in seconds (multiply by 1000 for milliseconds). p99_tpot measures per-request time per output token; the reciprocal of p99_intvty is not a substitute for p99_itl.

Shape

Code
BenchmarkRows

Example

Code
{
  "id": 421,
  "hardware": "h200_sxm",
  "framework": "vllm",
  "model": "dsr1",
  "precision": "fp8",
  "spec_method": "none",
  "disagg": false,
  "is_multinode": false,
  "prefill_tp": 8,
  "prefill_ep": 1,
  "prefill_dp_attention": false,
  "prefill_num_workers": 1,
  "decode_tp": 8,
  "decode_ep": 1,
  "decode_dp_attention": false,
  "decode_num_workers": 1,
  "num_prefill_gpu": 0,
  "num_decode_gpu": 8,
  "benchmark_type": "single_turn",
  "isl": 1024,
  "osl": 1024,
  "conc": 32,
  "offload_mode": "off",
  "image": "vllm/vllm-openai:v0.10.2",
  "recipe_fingerprint": "7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d",
  "metrics": {
    "median_ttft": 0.42,
    "median_tpot": 0.018,
    "tput_per_gpu": 128.4,
    "power_valid": 1,
    "power_metric_schema_version": 2,
    "avg_power_w": 678.5,
    "joules_per_output_token": 5.3,
    "joules_per_total_token": 2.65,
    "avg_temp_c": 61.2
  },
  "date": "2026-08-08",
  "run_url": "https://github.com/semianalysis/inference-benchmarks/actions/runs/123456789"
}

Scroll to inspect the full example.

Measured power

Benchmark rows may carry measured power, energy, and GPU-telemetry metric keys (avg_power_w, avg_total_gpu_power_w, total_gpu_energy_j, p75_power_w, p75_total_gpu_power_w, p90_power_w, p90_total_gpu_power_w, joules_per_*, avg_temp_c, peak_temp_c, avg_util_pct, avg_mem_used_mb). power_valid is tri-state: 1 means the measurement window was validated; 0 means validation failed and measured values are withheld end-to-end (the producer strips them and ingest scrubs them — treat any that remain as unreliable); absent means no validation verdict is available in this response. Legacy rows can lack the field, but absence alone establishes neither the reason, the measurement age, nor invalidity. power_metric_schema_version == 2 defines every unprefixed joules_per_* field as whole-deployment energy — unversioned disaggregated joules are ambiguous because those fields previously carried role-local values. workers[] carries the per-worker power/telemetry breakdown on multinode and disaggregated runs. power_invalid_reasons lists producer reason codes. power_audit optionally carries measurement-window bounds, device and sample counts, producer identity and the retained audit reference on valid and invalid rows. Missing audit metadata does not establish the measurement age or validity. For measured-power requests, use powerValid=strictV2 to require power_valid == 1 and power_metric_schema_version == 2. It is the only supported power filter. Omit powerValid for general benchmark requests so results remain available even when they lack valid power measurements.

Shape

Code
BenchmarkRows

Example

Code
{
  "power_valid": 1,
  "power_metric_schema_version": 2,
  "avg_power_w": 678.5,
  "joules_per_output_token": 5.3
}
ID-keyed maps

Bulk diagnostic responses are JSON objects whose keys are decimal benchmark result IDs. A missing key means no value was available for that ID.

Shape

Code
Record<string, value>

Example

Code
{
  "421": true
}
CollectiveX versions

CollectiveX reads require an explicit supported contract version. Supported versions: 1.

Shape

Code
CollectiveXDataset

04 / Reference

Endpoint reference

Expand an operation for parameters, statuses, and complete examples.

28 operations

Core benchmark data

Benchmark results, availability, workflow provenance, evaluations, and reliability.

GETStable/api/v1/availabilityList available benchmark configurations

Returns model, sequence, precision, hardware, framework, speculative method, benchmark type, and date combinations that have benchmark data.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/availability'

Responses

AvailabilityRows
200

Available configuration rows.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "model": {
        "type": "string"
      },
      "isl": {
        "type": [
          "number",
          "null"
        ]
      },
      "osl": {
        "type": [
          "number",
          "null"
        ]
      },
      "precision": {
        "type": "string"
      },
      "hardware": {
        "type": "string"
      },
      "framework": {
        "type": "string"
      },
      "spec_method": {
        "type": "string"
      },
      "disagg": {
        "type": "boolean"
      },
      "benchmark_type": {
        "type": "string"
      },
      "date": {
        "type": "string",
        "format": "date"
      }
    },
    "required": [
      "model",
      "isl",
      "osl",
      "precision",
      "hardware",
      "framework",
      "spec_method",
      "disagg",
      "benchmark_type",
      "date"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "model": "dsr1",
    "isl": 1024,
    "osl": 1024,
    "precision": "fp8",
    "hardware": "h200_sxm",
    "framework": "vllm",
    "spec_method": "none",
    "disagg": false,
    "benchmark_type": "single_turn",
    "date": "2026-08-08"
  }
]

Scroll to inspect the full example.

500

The availability query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/benchmarksRead benchmark results

Returns raw benchmark rows for a display model. Use date for an as-of snapshot, exact=true for that exact date, runId to constrain the latest lookup, or exactRun=true with a numeric runId for that run’s logical snapshot. An AgentX curve is scoped by model, hardware, framework, precision, and workload: a normal run replaces all prior topology, speculative-decoding, and offload variants in that curve. Explicit append-only runs may include the preceding same-image snapshot; producer IDs and URLs are preserved. Historical snapshots remain accessible. view=calculator returns a trimmed page-owned projection (measured power metrics and workers are removed; its allowlist may change). powerValid=strictV2 selects validated schema-v2 power measurements and cannot be combined with view=calculator. Omit powerValid to keep general benchmark results regardless of power validity.

Parameters

GET /api/v1/benchmarks: Parameters
NameLocationTypeRequirementDescriptionExample
modelquerystringRequiredDisplay model name.DeepSeek-R1-0528
datequerydateOptionalLatest data on or before YYYY-MM-DD, unless exact is true.2026-08-08
exactquerybooleanOptionalSet true to require the supplied date exactly.false
runIdqueryintegerOptionalNumeric GitHub Actions run ID. Non-numeric values are ignored.123456789
exactRunquerybooleanOptionalWith a numeric runId, return that run’s logical snapshot, including same-image predecessors for append-only runs.false
viewqueryenumOptionalcalculator trims each row to the page-owned metric allowlist the throughput calculator consumes and removes workers; measured power metrics are excluded from this view. Requires sequence. Omit for every stored metric, including measured power.calculator
sequencequeryenumOptionalRequired when view=calculator and ignored otherwise. Unknown values yield 400 Unknown calculator sequence.1k/1k
powerValidqueryenumOptionalOnly strictV2 is accepted. It keeps rows whose metrics.power_valid is the number 1 and metrics.power_metric_schema_version is the number 2 (whole-deployment energy semantics). Omit this parameter to apply no power filter, preserving throughput and latency results even when power is missing or invalid. Other values, including an empty value, yield 400 Unknown powerValid filter. Cannot be combined with view=calculator.strictV2

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/benchmarks?model=DeepSeek-R1-0528'

Responses

BenchmarkRows
200

Benchmark rows with scalar metrics in the metrics object.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "hardware": {
        "type": "string"
      },
      "framework": {
        "type": "string"
      },
      "model": {
        "type": "string"
      },
      "precision": {
        "type": "string"
      },
      "spec_method": {
        "type": "string"
      },
      "disagg": {
        "type": "boolean"
      },
      "is_multinode": {
        "type": "boolean"
      },
      "prefill_tp": {
        "type": "integer"
      },
      "prefill_ep": {
        "type": "integer"
      },
      "prefill_dp_attention": {
        "type": "boolean"
      },
      "prefill_num_workers": {
        "type": "integer"
      },
      "decode_tp": {
        "type": "integer"
      },
      "decode_ep": {
        "type": "integer"
      },
      "decode_dp_attention": {
        "type": "boolean"
      },
      "decode_num_workers": {
        "type": "integer"
      },
      "num_prefill_gpu": {
        "type": "integer",
        "description": "Physical prefill chips; aggregate engines may mirror their single chip count in both role columns."
      },
      "num_decode_gpu": {
        "type": "integer",
        "description": "Physical decode chips, independent of logical TP and DP. Sum role counts only for disaggregated engines."
      },
      "benchmark_type": {
        "type": "string"
      },
      "isl": {
        "type": [
          "number",
          "null"
        ]
      },
      "osl": {
        "type": [
          "number",
          "null"
        ]
      },
      "conc": {
        "type": "integer"
      },
      "offload_mode": {
        "type": "string"
      },
      "image": {
        "type": [
          "string",
          "null"
        ]
      },
      "recipe_fingerprint": {
        "type": [
          "string",
          "null"
        ]
      },
      "metrics": {
        "type": "object",
        "additionalProperties": {
          "type": "number"
        },
        "description": "Scalar metric map. Time metrics, including p99_itl and p99_tpot, are in seconds. p99_itl measures inter-token latency; p99_tpot measures per-request time per output token. Use the actual p99_itl field for an inter-token latency requirement, not the reciprocal of p99_intvty. Throughput metrics use tokens per second per GPU unless their name states otherwise; output_tput_per_gpu counts output tokens. Keys evolve independently; measured power / energy / GPU-telemetry keys are typed below.",
        "properties": {
          "power_valid": {
            "type": "number",
            "description": "Publication verdict: 1 = validated measurement window; 0 = failed validation — measured power/energy values are withheld from this row end-to-end, so treat any that remain as unreliable; absent = no validation verdict is available in this response. Absence alone establishes neither the reason, the measurement age, nor invalidity."
          },
          "power_metric_schema_version": {
            "type": "number",
            "description": "Power schema version. Version 2 defines every unprefixed joules_per_* field as whole-deployment energy, including on disaggregated runs."
          },
          "avg_power_w": {
            "type": "number",
            "description": "Mean per-GPU power draw in watts during the measured load window."
          },
          "avg_total_gpu_power_w": {
            "type": "number",
            "description": "Mean total GPU power draw in watts across the measured deployment."
          },
          "total_gpu_energy_j": {
            "type": "number",
            "description": "Total GPU energy integrated over the measured deployment load window, in joules."
          },
          "p75_power_w": {
            "type": "number",
            "description": "Time-weighted P75 of synchronized total GPU-board watts, divided by participating GPU count, over the validated benchmark window with piecewise-linear interpolation. Not a percentile of individual-device percentiles; absent when not measured."
          },
          "p75_total_gpu_power_w": {
            "type": "number",
            "description": "Time-weighted P75 of synchronized total GPU-board watts over the validated benchmark window with piecewise-linear interpolation. Accelerator boards only, not chassis or facility power."
          },
          "p90_power_w": {
            "type": "number",
            "description": "Time-weighted P90 of synchronized total GPU-board watts, divided by participating GPU count, over the validated benchmark window with piecewise-linear interpolation. Not a percentile of individual-device percentiles; absent when not measured."
          },
          "p90_total_gpu_power_w": {
            "type": "number",
            "description": "Time-weighted P90 of synchronized total GPU-board watts over the validated benchmark window with piecewise-linear interpolation. Accelerator boards only, not chassis or facility power."
          },
          "joules_per_successful_query": {
            "type": "number",
            "description": "Whole-deployment energy in joules divided by successful requests."
          },
          "joules_per_output_token": {
            "type": "number",
            "description": "Energy per generated output token in joules; cluster-wide on schema-version-2 rows, including disaggregated runs."
          },
          "joules_per_total_token": {
            "type": "number",
            "description": "Total system energy divided by input plus output tokens; a workload-shape-fair view that does not treat prompt tokens as free."
          },
          "prefill_avg_power_w": {
            "type": "number",
            "description": "Mean per-GPU power draw in watts across prefill workers; emitted only for deployments with distinct prefill and decode roles."
          },
          "decode_avg_power_w": {
            "type": "number",
            "description": "Mean per-GPU power draw in watts across decode workers; emitted only for deployments with distinct prefill and decode roles."
          },
          "joules_per_input_token": {
            "type": "number",
            "description": "Energy per input token in joules; cluster-wide on schema-version-2 rows."
          },
          "prefill_joules_per_input_token": {
            "type": "number",
            "description": "Role-local prefill energy per input token in joules."
          },
          "decode_joules_per_output_token": {
            "type": "number",
            "description": "Role-local decode energy per generated output token in joules."
          },
          "avg_temp_c": {
            "type": "number",
            "description": "Mean per-GPU temperature in degrees Celsius during the load window."
          },
          "peak_temp_c": {
            "type": "number",
            "description": "Maximum instantaneous per-GPU temperature in degrees Celsius during the load window."
          },
          "avg_util_pct": {
            "type": "number",
            "description": "Mean per-GPU utilization percentage (0-100) during the load window."
          },
          "avg_mem_used_mb": {
            "type": "number",
            "description": "Mean per-GPU memory used in MB during the load window."
          }
        }
      },
      "workers": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "role": {
              "type": "string"
            },
            "worker_idx": {
              "type": "integer"
            },
            "hosts": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "num_gpus": {
              "type": "integer"
            },
            "avg_power_w": {
              "type": "number"
            },
            "avg_temp_c": {
              "type": "number"
            },
            "peak_temp_c": {
              "type": "number"
            },
            "avg_util_pct": {
              "type": "number"
            },
            "avg_mem_used_mb": {
              "type": "number"
            }
          },
          "required": [
            "role",
            "worker_idx",
            "num_gpus",
            "avg_power_w"
          ],
          "additionalProperties": false
        }
      },
      "power_invalid_reasons": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Producer snake_case reason codes explaining a withheld measurement, present when metrics.power_valid == 0. Absent on legacy rows and validated rows."
      },
      "power_audit": {
        "type": "object",
        "properties": {
          "window_start_unix": {
            "type": "number"
          },
          "window_end_unix": {
            "type": "number"
          },
          "expected_gpu_count": {
            "type": "integer"
          },
          "observed_gpu_count": {
            "type": "integer"
          },
          "sample_count": {
            "type": "integer"
          },
          "max_sample_gap_s": {
            "type": "number"
          },
          "producer_sha": {
            "type": [
              "string",
              "null"
            ]
          },
          "exporter_image_sha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": "string"
          },
          "observed_gpu_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": true,
        "description": "Compact power measurement-window audit emitted alongside the power_valid verdict: window bounds, expected vs. observed GPU counts, sample statistics, and producer identity (producer_sha / exporter_image_sha256 are null for single-node telemetry without an srt-slurm producer). source is a relative path within the source run artifact bundle; observed_gpu_ids contains producer device identifiers, which may be indices rather than physical UUIDs. Present on valid and invalid rows when emitted; absence alone does not establish age or validity."
      },
      "date": {
        "type": "string",
        "format": "date"
      },
      "workflow_run_id": {
        "type": "integer"
      },
      "run_started_at": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time"
      },
      "run_url": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "required": [
      "id",
      "hardware",
      "framework",
      "model",
      "precision",
      "spec_method",
      "disagg",
      "is_multinode",
      "prefill_tp",
      "prefill_ep",
      "prefill_dp_attention",
      "prefill_num_workers",
      "decode_tp",
      "decode_ep",
      "decode_dp_attention",
      "decode_num_workers",
      "num_prefill_gpu",
      "num_decode_gpu",
      "benchmark_type",
      "isl",
      "osl",
      "conc",
      "offload_mode",
      "image",
      "recipe_fingerprint",
      "metrics",
      "date",
      "run_url"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "id": 421,
    "hardware": "h200_sxm",
    "framework": "vllm",
    "model": "dsr1",
    "precision": "fp8",
    "spec_method": "none",
    "disagg": false,
    "is_multinode": false,
    "prefill_tp": 8,
    "prefill_ep": 1,
    "prefill_dp_attention": false,
    "prefill_num_workers": 1,
    "decode_tp": 8,
    "decode_ep": 1,
    "decode_dp_attention": false,
    "decode_num_workers": 1,
    "num_prefill_gpu": 0,
    "num_decode_gpu": 8,
    "benchmark_type": "single_turn",
    "isl": 1024,
    "osl": 1024,
    "conc": 32,
    "offload_mode": "off",
    "image": "vllm/vllm-openai:v0.10.2",
    "recipe_fingerprint": "7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d",
    "metrics": {
      "median_ttft": 0.42,
      "median_tpot": 0.018,
      "tput_per_gpu": 128.4,
      "power_valid": 1,
      "power_metric_schema_version": 2,
      "avg_power_w": 678.5,
      "joules_per_output_token": 5.3,
      "joules_per_total_token": 2.65,
      "avg_temp_c": 61.2
    },
    "date": "2026-08-08",
    "run_url": "https://github.com/semianalysis/inference-benchmarks/actions/runs/123456789"
  }
]

Scroll to inspect the full example.

400

The model is missing or unsupported, the calculator sequence is unknown, a supplied powerValid value is not strictV2, or powerValid=strictV2 is combined with view=calculator.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unknown model"
}
500

The benchmark query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/benchmarks/historyRead benchmark history

Returns historical logical snapshots for one model and either a fixed input/output token pair or Agentic Traces. Replaced AgentX variants remain in their earlier snapshots. Append-only snapshots include inherited points with original producer metadata and separate curve snapshot metadata.

Parameters

GET /api/v1/benchmarks/history: Parameters
NameLocationTypeRequirementDescriptionExample
modelquerystringRequiredDisplay model name.DeepSeek-R1-0528
islqueryintegerOptionalPositive input sequence length in tokens. Required unless benchmarkType=agentic_traces.1024
oslqueryintegerOptionalPositive output sequence length in tokens. Required unless benchmarkType=agentic_traces.1024
benchmarkTypequerystringOptionalSet to agentic_traces to read Agentic Traces history without ISL/OSL.agentic_traces
viewqueryenumOptionalcalculator trims each row to the metrics the throughput calculator consumes, for a smaller payload. Omit to retain other history metrics, including measured power when present. Both views omit mean_* and std_* statistics for ttft, tpot, itl, e2el, and intvty.calculator

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/benchmarks/history?model=DeepSeek-R1-0528&isl=1024&osl=1024'

Responses

BenchmarkRows
200

Historical benchmark rows.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "hardware": {
        "type": "string"
      },
      "framework": {
        "type": "string"
      },
      "model": {
        "type": "string"
      },
      "precision": {
        "type": "string"
      },
      "spec_method": {
        "type": "string"
      },
      "disagg": {
        "type": "boolean"
      },
      "is_multinode": {
        "type": "boolean"
      },
      "prefill_tp": {
        "type": "integer"
      },
      "prefill_ep": {
        "type": "integer"
      },
      "prefill_dp_attention": {
        "type": "boolean"
      },
      "prefill_num_workers": {
        "type": "integer"
      },
      "decode_tp": {
        "type": "integer"
      },
      "decode_ep": {
        "type": "integer"
      },
      "decode_dp_attention": {
        "type": "boolean"
      },
      "decode_num_workers": {
        "type": "integer"
      },
      "num_prefill_gpu": {
        "type": "integer",
        "description": "Physical prefill chips; aggregate engines may mirror their single chip count in both role columns."
      },
      "num_decode_gpu": {
        "type": "integer",
        "description": "Physical decode chips, independent of logical TP and DP. Sum role counts only for disaggregated engines."
      },
      "benchmark_type": {
        "type": "string"
      },
      "isl": {
        "type": [
          "number",
          "null"
        ]
      },
      "osl": {
        "type": [
          "number",
          "null"
        ]
      },
      "conc": {
        "type": "integer"
      },
      "offload_mode": {
        "type": "string"
      },
      "image": {
        "type": [
          "string",
          "null"
        ]
      },
      "recipe_fingerprint": {
        "type": [
          "string",
          "null"
        ]
      },
      "metrics": {
        "type": "object",
        "additionalProperties": {
          "type": "number"
        },
        "description": "Scalar metric map. Time metrics, including p99_itl and p99_tpot, are in seconds. p99_itl measures inter-token latency; p99_tpot measures per-request time per output token. Use the actual p99_itl field for an inter-token latency requirement, not the reciprocal of p99_intvty. Throughput metrics use tokens per second per GPU unless their name states otherwise; output_tput_per_gpu counts output tokens. Keys evolve independently; measured power / energy / GPU-telemetry keys are typed below.",
        "properties": {
          "power_valid": {
            "type": "number",
            "description": "Publication verdict: 1 = validated measurement window; 0 = failed validation — measured power/energy values are withheld from this row end-to-end, so treat any that remain as unreliable; absent = no validation verdict is available in this response. Absence alone establishes neither the reason, the measurement age, nor invalidity."
          },
          "power_metric_schema_version": {
            "type": "number",
            "description": "Power schema version. Version 2 defines every unprefixed joules_per_* field as whole-deployment energy, including on disaggregated runs."
          },
          "avg_power_w": {
            "type": "number",
            "description": "Mean per-GPU power draw in watts during the measured load window."
          },
          "avg_total_gpu_power_w": {
            "type": "number",
            "description": "Mean total GPU power draw in watts across the measured deployment."
          },
          "total_gpu_energy_j": {
            "type": "number",
            "description": "Total GPU energy integrated over the measured deployment load window, in joules."
          },
          "p75_power_w": {
            "type": "number",
            "description": "Time-weighted P75 of synchronized total GPU-board watts, divided by participating GPU count, over the validated benchmark window with piecewise-linear interpolation. Not a percentile of individual-device percentiles; absent when not measured."
          },
          "p75_total_gpu_power_w": {
            "type": "number",
            "description": "Time-weighted P75 of synchronized total GPU-board watts over the validated benchmark window with piecewise-linear interpolation. Accelerator boards only, not chassis or facility power."
          },
          "p90_power_w": {
            "type": "number",
            "description": "Time-weighted P90 of synchronized total GPU-board watts, divided by participating GPU count, over the validated benchmark window with piecewise-linear interpolation. Not a percentile of individual-device percentiles; absent when not measured."
          },
          "p90_total_gpu_power_w": {
            "type": "number",
            "description": "Time-weighted P90 of synchronized total GPU-board watts over the validated benchmark window with piecewise-linear interpolation. Accelerator boards only, not chassis or facility power."
          },
          "joules_per_successful_query": {
            "type": "number",
            "description": "Whole-deployment energy in joules divided by successful requests."
          },
          "joules_per_output_token": {
            "type": "number",
            "description": "Energy per generated output token in joules; cluster-wide on schema-version-2 rows, including disaggregated runs."
          },
          "joules_per_total_token": {
            "type": "number",
            "description": "Total system energy divided by input plus output tokens; a workload-shape-fair view that does not treat prompt tokens as free."
          },
          "prefill_avg_power_w": {
            "type": "number",
            "description": "Mean per-GPU power draw in watts across prefill workers; emitted only for deployments with distinct prefill and decode roles."
          },
          "decode_avg_power_w": {
            "type": "number",
            "description": "Mean per-GPU power draw in watts across decode workers; emitted only for deployments with distinct prefill and decode roles."
          },
          "joules_per_input_token": {
            "type": "number",
            "description": "Energy per input token in joules; cluster-wide on schema-version-2 rows."
          },
          "prefill_joules_per_input_token": {
            "type": "number",
            "description": "Role-local prefill energy per input token in joules."
          },
          "decode_joules_per_output_token": {
            "type": "number",
            "description": "Role-local decode energy per generated output token in joules."
          },
          "avg_temp_c": {
            "type": "number",
            "description": "Mean per-GPU temperature in degrees Celsius during the load window."
          },
          "peak_temp_c": {
            "type": "number",
            "description": "Maximum instantaneous per-GPU temperature in degrees Celsius during the load window."
          },
          "avg_util_pct": {
            "type": "number",
            "description": "Mean per-GPU utilization percentage (0-100) during the load window."
          },
          "avg_mem_used_mb": {
            "type": "number",
            "description": "Mean per-GPU memory used in MB during the load window."
          }
        }
      },
      "workers": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "role": {
              "type": "string"
            },
            "worker_idx": {
              "type": "integer"
            },
            "hosts": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "num_gpus": {
              "type": "integer"
            },
            "avg_power_w": {
              "type": "number"
            },
            "avg_temp_c": {
              "type": "number"
            },
            "peak_temp_c": {
              "type": "number"
            },
            "avg_util_pct": {
              "type": "number"
            },
            "avg_mem_used_mb": {
              "type": "number"
            }
          },
          "required": [
            "role",
            "worker_idx",
            "num_gpus",
            "avg_power_w"
          ],
          "additionalProperties": false
        }
      },
      "power_invalid_reasons": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Producer snake_case reason codes explaining a withheld measurement, present when metrics.power_valid == 0. Absent on legacy rows and validated rows."
      },
      "power_audit": {
        "type": "object",
        "properties": {
          "window_start_unix": {
            "type": "number"
          },
          "window_end_unix": {
            "type": "number"
          },
          "expected_gpu_count": {
            "type": "integer"
          },
          "observed_gpu_count": {
            "type": "integer"
          },
          "sample_count": {
            "type": "integer"
          },
          "max_sample_gap_s": {
            "type": "number"
          },
          "producer_sha": {
            "type": [
              "string",
              "null"
            ]
          },
          "exporter_image_sha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": "string"
          },
          "observed_gpu_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": true,
        "description": "Compact power measurement-window audit emitted alongside the power_valid verdict: window bounds, expected vs. observed GPU counts, sample statistics, and producer identity (producer_sha / exporter_image_sha256 are null for single-node telemetry without an srt-slurm producer). source is a relative path within the source run artifact bundle; observed_gpu_ids contains producer device identifiers, which may be indices rather than physical UUIDs. Present on valid and invalid rows when emitted; absence alone does not establish age or validity."
      },
      "date": {
        "type": "string",
        "format": "date"
      },
      "workflow_run_id": {
        "type": "integer"
      },
      "run_started_at": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time"
      },
      "run_url": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "required": [
      "id",
      "hardware",
      "framework",
      "model",
      "precision",
      "spec_method",
      "disagg",
      "is_multinode",
      "prefill_tp",
      "prefill_ep",
      "prefill_dp_attention",
      "prefill_num_workers",
      "decode_tp",
      "decode_ep",
      "decode_dp_attention",
      "decode_num_workers",
      "num_prefill_gpu",
      "num_decode_gpu",
      "benchmark_type",
      "isl",
      "osl",
      "conc",
      "offload_mode",
      "image",
      "recipe_fingerprint",
      "metrics",
      "date",
      "run_url"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "id": 421,
    "hardware": "h200_sxm",
    "framework": "vllm",
    "model": "dsr1",
    "precision": "fp8",
    "spec_method": "none",
    "disagg": false,
    "is_multinode": false,
    "prefill_tp": 8,
    "prefill_ep": 1,
    "prefill_dp_attention": false,
    "prefill_num_workers": 1,
    "decode_tp": 8,
    "decode_ep": 1,
    "decode_dp_attention": false,
    "decode_num_workers": 1,
    "num_prefill_gpu": 0,
    "num_decode_gpu": 8,
    "benchmark_type": "single_turn",
    "isl": 1024,
    "osl": 1024,
    "conc": 32,
    "offload_mode": "off",
    "image": "vllm/vllm-openai:v0.10.2",
    "recipe_fingerprint": "7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d7d72a33d",
    "metrics": {
      "median_ttft": 0.42,
      "median_tpot": 0.018,
      "tput_per_gpu": 128.4,
      "power_valid": 1,
      "power_metric_schema_version": 2,
      "avg_power_w": 678.5,
      "joules_per_output_token": 5.3,
      "joules_per_total_token": 2.65,
      "avg_temp_c": 61.2
    },
    "date": "2026-08-08",
    "run_url": "https://github.com/semianalysis/inference-benchmarks/actions/runs/123456789"
  }
]

Scroll to inspect the full example.

400

Required parameters are missing or the model is unsupported.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "model, isl, and osl are required"
}
500

The history query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/workflow-infoRead workflow provenance

Returns workflow runs, changelogs, available configurations, and per-run configuration coverage. Omit date for all dates.

Parameters

GET /api/v1/workflow-info: Parameters
NameLocationTypeRequirementDescriptionExample
datequerydateOptionalOptional YYYY-MM-DD filter.2026-08-08
benchmarkTypequerystringOptionalSet to agentic_traces to scope per-run configuration coverage to Agentic Traces.agentic_traces

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/workflow-info?date=2026-08-08'

Responses

WorkflowInfo
200

Workflow provenance grouped into four arrays.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "github_run_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "conclusion": {
            "type": [
              "string",
              "null"
            ]
          },
          "run_attempt": {
            "type": "integer"
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "date": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "github_run_id",
          "name",
          "conclusion",
          "run_attempt",
          "html_url",
          "created_at",
          "date"
        ],
        "additionalProperties": false
      }
    },
    "changelogs": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "configs": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "runConfigs": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "runs",
    "changelogs",
    "configs",
    "runConfigs"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "runs": [
    {
      "github_run_id": 123456789,
      "name": "nightly-h200",
      "conclusion": "success",
      "run_attempt": 1,
      "html_url": "https://github.com/semianalysis/inference-benchmarks/actions/runs/123456789",
      "created_at": "2026-08-08T03:00:00Z",
      "date": "2026-08-08"
    }
  ],
  "changelogs": [],
  "configs": [],
  "runConfigs": []
}

Scroll to inspect the full example.

400

date is not YYYY-MM-DD.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Invalid date format (YYYY-MM-DD required)"
}
500

The workflow query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/evaluationsList evaluation aggregates

Returns latest-attempt evaluation results with configuration, task, provenance, and metric values.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/evaluations'

Responses

EvaluationRows
200

Evaluation result rows.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "config_id": {
        "type": "integer"
      },
      "hardware": {
        "type": "string"
      },
      "framework": {
        "type": "string"
      },
      "model": {
        "type": "string"
      },
      "precision": {
        "type": "string"
      },
      "spec_method": {
        "type": "string"
      },
      "disagg": {
        "type": "boolean"
      },
      "is_multinode": {
        "type": "boolean"
      },
      "prefill_tp": {
        "type": "integer"
      },
      "prefill_ep": {
        "type": "integer"
      },
      "prefill_dp_attention": {
        "type": "boolean"
      },
      "prefill_num_workers": {
        "type": "integer"
      },
      "decode_tp": {
        "type": "integer"
      },
      "decode_ep": {
        "type": "integer"
      },
      "decode_dp_attention": {
        "type": "boolean"
      },
      "decode_num_workers": {
        "type": "integer"
      },
      "num_prefill_gpu": {
        "type": "integer",
        "description": "Physical prefill chips; aggregate engines may mirror their single chip count in both role columns."
      },
      "num_decode_gpu": {
        "type": "integer",
        "description": "Physical decode chips, independent of logical TP and DP. Sum role counts only for disaggregated engines."
      },
      "task": {
        "type": "string"
      },
      "date": {
        "type": "string",
        "format": "date"
      },
      "conc": {
        "type": [
          "number",
          "null"
        ]
      },
      "metrics": {
        "type": "object",
        "additionalProperties": {
          "type": "number"
        }
      },
      "timestamp": {
        "type": "string",
        "format": "date-time"
      },
      "run_url": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "required": [
      "id",
      "config_id",
      "hardware",
      "framework",
      "model",
      "precision",
      "spec_method",
      "disagg",
      "is_multinode",
      "prefill_tp",
      "prefill_ep",
      "prefill_dp_attention",
      "prefill_num_workers",
      "decode_tp",
      "decode_ep",
      "decode_dp_attention",
      "decode_num_workers",
      "num_prefill_gpu",
      "num_decode_gpu",
      "task",
      "date",
      "conc",
      "metrics",
      "timestamp",
      "run_url"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "id": 72,
    "config_id": 11,
    "hardware": "h200_sxm",
    "framework": "vllm",
    "model": "dsr1",
    "precision": "fp8",
    "spec_method": "none",
    "disagg": false,
    "is_multinode": false,
    "prefill_tp": 8,
    "prefill_ep": 1,
    "prefill_dp_attention": false,
    "prefill_num_workers": 1,
    "decode_tp": 8,
    "decode_ep": 1,
    "decode_dp_attention": false,
    "decode_num_workers": 1,
    "num_prefill_gpu": 0,
    "num_decode_gpu": 8,
    "task": "gpqa",
    "date": "2026-08-08",
    "conc": null,
    "metrics": {
      "accuracy": 0.78
    },
    "timestamp": "2026-08-08T03:00:00Z",
    "run_url": null
  }
]

Scroll to inspect the full example.

500

The evaluation query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/reliabilityList benchmark reliability

Returns successful and total run counts by hardware and date.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/reliability'

Responses

ReliabilityRows
200

Reliability count rows.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "hardware": {
        "type": "string"
      },
      "date": {
        "type": "string",
        "format": "date"
      },
      "n_success": {
        "type": "integer"
      },
      "total": {
        "type": "integer"
      }
    },
    "required": [
      "hardware",
      "date",
      "n_success",
      "total"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "hardware": "h200_sxm",
    "date": "2026-08-08",
    "n_success": 18,
    "total": 20
  }
]
500

The reliability query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}

External feeds

Stable feeds for spreadsheets, release tracking, submissions, and runtime images.

GETStable/api/v1/tco-feedCompute a TCO feed

Computes Pareto-frontier throughput points or weighted scores for spreadsheet TCO models. Every scoring assumption is encoded in the URL. CSV returns the same selected view as a flat table.

Parameters

GET /api/v1/tco-feed: Parameters
NameLocationTypeRequirementDescriptionExample
modelquerystringOptionalDB model key or display model name.dsv4
workloadsqueryCSV workload listOptionalComma-separated <isl>x<osl> token pairs.1024x1024,8192x1024
tiersqueryCSV number listOptionalPositive interactivity targets in output tokens per second per user.30,50,75,100
datequerydateOptionalUse data on or before YYYY-MM-DD. Omit for latest.2026-08-08
formatqueryenumOptionalResponse encoding.json
viewqueryenumOptionalpoints returns one row per hardware, workload, and tier. scores returns one row per hardware.points
weightsqueryCSV number listOptionalscores only. One non-negative weight per tier, normalized to sum to 1.0.35,0.4,0.2,0.05
workload_weightsqueryCSV number listOptionalscores only. One non-negative weight per workload, normalized to sum to 1. Defaults to equal weights.0.5,0.5
alphaquerynumberOptionalscores only. Input-token value ratio in [0, 10].0.25

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/tco-feed?model=dsv4&workloads=1024x1024,8192x1024&tiers=30,50,75,100&view=points&format=json'

Responses

TcoFeed
200

The selected points or scores envelope.

Media type: application/json

Response shape

Code
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "model": {
          "type": "string"
        },
        "db_model_keys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "workloads": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "required": [
        "model",
        "db_model_keys",
        "date",
        "workloads",
        "tiers",
        "rows"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "model": {
          "type": "string"
        },
        "db_model_keys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "workloads": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "weights": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "workload_weights": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "alpha": {
          "type": "number"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "required": [
        "model",
        "db_model_keys",
        "date",
        "workloads",
        "tiers",
        "weights",
        "workload_weights",
        "alpha",
        "rows"
      ],
      "additionalProperties": false
    }
  ]
}

Scroll to inspect the full example.

Response example

Code
{
  "model": "dsv4",
  "db_model_keys": [
    "dsv4"
  ],
  "date": null,
  "workloads": [
    "1024x1024"
  ],
  "tiers": [
    50
  ],
  "rows": [
    {
      "hardware": "h200_sxm",
      "workload": "1024x1024",
      "tier": 50,
      "output_tput_per_gpu": 118.2,
      "boundary": "interpolated",
      "is_interpolated": true,
      "frontier_points": 3,
      "frontier_min_interactivity": 30,
      "frontier_max_interactivity": 75,
      "latest_date": "2026-08-08",
      "oldest_frontier_date": "2026-08-06",
      "evidence_date": {
        "from": "2026-08-06",
        "to": "2026-08-08"
      }
    }
  ]
}

Scroll to inspect the full example.

Alternate representation: text/csv

Response shape

Code
{
  "type": "string"
}

Response example

Code
hardware,workload,tier,output_tput_per_gpu,boundary,frontier_points,frontier_min_interactivity,frontier_max_interactivity,latest_date,oldest_frontier_date
h200_sxm,1024x1024,50,118.2,interpolated,3,30,75,2026-08-08,2026-08-06
400

A model, date, view, format, workload, tier, weight, or alpha value is invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Invalid tiers: expected comma-separated positive numbers"
}
500

The TCO calculation failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/submissionsRead submission coverage

Returns configuration-level submission summaries and daily hardware submission volume.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/submissions'

Responses

Submissions
200

Submission summary and volume arrays.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "summary": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string"
          },
          "hardware": {
            "type": "string"
          },
          "framework": {
            "type": "string"
          },
          "precision": {
            "type": "string"
          },
          "spec_method": {
            "type": "string"
          },
          "disagg": {
            "type": "boolean"
          },
          "is_multinode": {
            "type": "boolean"
          },
          "num_prefill_gpu": {
            "type": "integer",
            "description": "Physical prefill chips; aggregate engines may mirror their single chip count in both role columns."
          },
          "num_decode_gpu": {
            "type": "integer",
            "description": "Physical decode chips, independent of logical TP and DP. Sum role counts only for disaggregated engines."
          },
          "prefill_tp": {
            "type": "integer"
          },
          "prefill_ep": {
            "type": "integer"
          },
          "decode_tp": {
            "type": "integer"
          },
          "decode_ep": {
            "type": "integer"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "total_datapoints": {
            "type": "integer"
          },
          "distinct_sequences": {
            "type": "integer"
          },
          "distinct_concurrencies": {
            "type": "integer"
          },
          "max_concurrency": {
            "type": "integer"
          },
          "image": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "model",
          "hardware",
          "framework",
          "precision",
          "spec_method",
          "disagg",
          "is_multinode",
          "num_prefill_gpu",
          "num_decode_gpu",
          "prefill_tp",
          "prefill_ep",
          "decode_tp",
          "decode_ep",
          "date",
          "total_datapoints",
          "distinct_sequences",
          "distinct_concurrencies",
          "max_concurrency",
          "image"
        ],
        "additionalProperties": false
      }
    },
    "volume": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "hardware": {
            "type": "string"
          },
          "datapoints": {
            "type": "integer"
          }
        },
        "required": [
          "date",
          "hardware",
          "datapoints"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "summary",
    "volume"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "summary": [
    {
      "model": "dsr1",
      "hardware": "h200_sxm",
      "framework": "vllm",
      "precision": "fp8",
      "spec_method": "none",
      "disagg": false,
      "is_multinode": false,
      "num_prefill_gpu": 0,
      "num_decode_gpu": 8,
      "prefill_tp": 1,
      "prefill_ep": 1,
      "decode_tp": 8,
      "decode_ep": 1,
      "date": "2026-08-08",
      "total_datapoints": 24,
      "distinct_sequences": 3,
      "distinct_concurrencies": 8,
      "max_concurrency": 256,
      "image": "vllm/vllm-openai:v0.10.2"
    }
  ],
  "volume": [
    {
      "date": "2026-08-08",
      "hardware": "h200_sxm",
      "datapoints": 24
    }
  ]
}

Scroll to inspect the full example.

500

The submissions query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/framework-releasesRead latest framework releases

Returns the latest non-draft, non-prerelease GitHub release tag for vLLM and SGLang. A null value means the upstream lookup had no usable release.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/framework-releases'

Responses

FrameworkReleases
200

Framework keys mapped to release tags or null.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "additionalProperties": {
    "type": [
      "string",
      "null"
    ]
  }
}

Response example

Code
{
  "vllm": "v0.10.2",
  "sglang": "v0.4.10"
}
500

The release lookup failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/latest-imagesRead latest runtime images

Returns the latest container image observed for each benchmark configuration and sequence.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/latest-images'

Responses

LatestImageRows
200

Latest image rows.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "model": {
        "type": "string"
      },
      "hardware": {
        "type": "string"
      },
      "framework": {
        "type": "string"
      },
      "precision": {
        "type": "string"
      },
      "spec_method": {
        "type": "string"
      },
      "disagg": {
        "type": "boolean"
      },
      "isl": {
        "type": [
          "number",
          "null"
        ]
      },
      "osl": {
        "type": [
          "number",
          "null"
        ]
      },
      "benchmark_type": {
        "type": "string"
      },
      "image": {
        "type": "string"
      },
      "date": {
        "type": "string",
        "format": "date"
      }
    },
    "required": [
      "model",
      "hardware",
      "framework",
      "precision",
      "spec_method",
      "disagg",
      "isl",
      "osl",
      "benchmark_type",
      "image",
      "date"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "model": "dsr1",
    "hardware": "h200_sxm",
    "framework": "vllm",
    "precision": "fp8",
    "spec_method": "none",
    "disagg": false,
    "isl": 1024,
    "osl": 1024,
    "benchmark_type": "single_turn",
    "image": "vllm/vllm-openai:v0.10.2",
    "date": "2026-08-08"
  },
  {
    "model": "dsr1",
    "hardware": "h200_sxm",
    "framework": "vllm",
    "precision": "fp8",
    "spec_method": "none",
    "disagg": false,
    "isl": null,
    "osl": null,
    "benchmark_type": "agentic_traces",
    "image": "vllm/vllm-openai:v0.10.2",
    "date": "2026-08-08"
  }
]

Scroll to inspect the full example.

500

The image query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}

Datasets

Dataset registry, metadata, conversation indexes, and conversation structures.

GETStable/api/v1/datasetsList ingested datasets

Returns dataset registry cards without the large chart_data field.

Parameters

No parameters.

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/datasets'

Responses

DatasetRecords
200

Dataset registry records.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string"
      },
      "slug": {
        "type": "string"
      },
      "label": {
        "type": "string"
      },
      "variant": {
        "type": "string"
      },
      "description": {
        "type": [
          "string",
          "null"
        ]
      },
      "hf_url": {
        "type": [
          "string",
          "null"
        ]
      },
      "license": {
        "type": [
          "string",
          "null"
        ]
      },
      "conversation_count": {
        "type": "integer"
      },
      "summary": {
        "type": "object",
        "additionalProperties": true
      },
      "ingested_at": {
        "type": "string",
        "format": "date-time"
      }
    },
    "required": [
      "id",
      "slug",
      "label",
      "variant",
      "description",
      "hf_url",
      "license",
      "conversation_count",
      "summary",
      "ingested_at"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
[
  {
    "id": "ds_01",
    "slug": "cc-traces-weka",
    "label": "CC Traces Weka",
    "variant": "default",
    "description": "Agentic coding traces",
    "hf_url": "https://huggingface.co/datasets/example/cc-traces-weka",
    "license": "Apache-2.0",
    "conversation_count": 1200,
    "summary": {
      "totalIn": 8200000,
      "totalOut": 1700000
    },
    "ingested_at": "2026-08-08T03:00:00Z"
  }
]

Scroll to inspect the full example.

500

The dataset registry query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/datasets/{slug}Read dataset details

Returns one dataset registry record plus its precomputed chart_data distributions.

Parameters

GET /api/v1/datasets/{slug}: Parameters
NameLocationTypeRequirementDescriptionExample
slugpathstringRequiredDataset slug from the registry.cc-traces-weka

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/datasets/cc-traces-weka'

Responses

DatasetDetail
200

Dataset metadata with chart_data.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "label": {
      "type": "string"
    },
    "variant": {
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "hf_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "license": {
      "type": [
        "string",
        "null"
      ]
    },
    "conversation_count": {
      "type": "integer"
    },
    "summary": {
      "type": "object",
      "additionalProperties": true
    },
    "ingested_at": {
      "type": "string",
      "format": "date-time"
    },
    "chart_data": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "id",
    "slug",
    "label",
    "variant",
    "description",
    "hf_url",
    "license",
    "conversation_count",
    "summary",
    "ingested_at",
    "chart_data"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "id": "ds_01",
  "slug": "cc-traces-weka",
  "label": "CC Traces Weka",
  "variant": "default",
  "description": "Agentic coding traces",
  "hf_url": null,
  "license": "Apache-2.0",
  "conversation_count": 1200,
  "summary": {},
  "ingested_at": "2026-08-08T03:00:00Z",
  "chart_data": {
    "tokens": {
      "bins": [
        0,
        1000,
        2000
      ],
      "counts": [
        140,
        320
      ]
    }
  }
}

Scroll to inspect the full example.

404

No dataset has this slug.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The dataset query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/datasets/{slug}/conversationsList dataset conversations

Returns a searchable, sorted, paginated conversation index. It contains counts only, not the full conversation structure.

Parameters

GET /api/v1/datasets/{slug}/conversations: Parameters
NameLocationTypeRequirementDescriptionExample
slugpathstringRequiredDataset slug from the registry.cc-traces-weka
searchquerystringOptionalTrimmed conversation ID search, at most 100 characters.trace-018
limitqueryintegerOptionalPage size, clamped to 1 through 200.50
offsetqueryintegerOptionalZero-based row offset. Negative values become 0.0
sortqueryenumOptionalSort by tokens, turns, subagents, or id. Unknown values fall back to tokens.tokens

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/datasets/cc-traces-weka/conversations?limit=50&offset=0&sort=tokens'

Responses

ConversationList
200

Total count and conversation index items.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "conv_id": {
            "type": "string"
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "num_turns": {
            "type": "integer"
          },
          "num_subagent_groups": {
            "type": "integer"
          },
          "total_in": {
            "type": "integer"
          },
          "total_out": {
            "type": "integer"
          },
          "total_cached": {
            "type": "integer"
          }
        },
        "required": [
          "conv_id",
          "models",
          "num_turns",
          "num_subagent_groups",
          "total_in",
          "total_out",
          "total_cached"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "total",
    "items"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "total": 1200,
  "items": [
    {
      "conv_id": "trace-018",
      "models": [
        "claude-sonnet-4"
      ],
      "num_turns": 42,
      "num_subagent_groups": 3,
      "total_in": 18200,
      "total_out": 4200,
      "total_cached": 9600
    }
  ]
}

Scroll to inspect the full example.

400

search exceeds 100 characters.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "search too long"
}
404

No dataset has this slug.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The conversation query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETStable/api/v1/datasets/{slug}/conversations/{convId}Read a conversation structure

Returns one conversation and its flamegraph-ready nested structure. App Router decodes each path value once.

Parameters

GET /api/v1/datasets/{slug}/conversations/{convId}: Parameters
NameLocationTypeRequirementDescriptionExample
slugpathstringRequiredDataset slug from the registry.cc-traces-weka
convIdpathstringRequiredConversation ID exactly as listed by the conversation index.trace-018

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/datasets/cc-traces-weka/conversations/trace-018'

Responses

ConversationDetail
200

Conversation counts and nested structure.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "conv_id": {
      "type": "string"
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "num_turns": {
      "type": "integer"
    },
    "num_subagent_groups": {
      "type": "integer"
    },
    "total_in": {
      "type": "integer"
    },
    "total_out": {
      "type": "integer"
    },
    "total_cached": {
      "type": "integer"
    },
    "structure": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "conv_id",
    "models",
    "num_turns",
    "num_subagent_groups",
    "total_in",
    "total_out",
    "total_cached",
    "structure"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "conv_id": "trace-018",
  "models": [
    "claude-sonnet-4"
  ],
  "num_turns": 42,
  "num_subagent_groups": 3,
  "total_in": 18200,
  "total_out": 4200,
  "total_cached": 9600,
  "structure": {
    "name": "trace-018",
    "children": []
  }
}

Scroll to inspect the full example.

404

The dataset or conversation does not exist.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The conversation query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}

CollectiveX

Versioned collective communication sweep results and run discovery.

GETBeta/api/v1/collectivex/latestRead the latest CollectiveX dataset

Discovers and ingests the latest sweep when needed, then returns its versioned neutral dataset. A stored run is served if refresh fails.

Parameters

GET /api/v1/collectivex/latest: Parameters
NameLocationTypeRequirementDescriptionExample
versionqueryenumRequiredCollectiveX contract version.1

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/collectivex/latest?version=1'

Responses

CollectiveXDataset
200

Latest CollectiveX run, coverage, series, and optional KV cases.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "version": {
      "type": "integer"
    },
    "run": {
      "type": "object",
      "properties": {
        "run_id": {
          "type": "string"
        },
        "run_attempt": {
          "type": "integer"
        },
        "generated_at": {
          "type": "string",
          "format": "date-time"
        },
        "conclusion": {
          "type": [
            "string",
            "null"
          ]
        },
        "source_sha": {
          "type": "string"
        },
        "requested_cases": {
          "type": "integer"
        },
        "terminal_cases": {
          "type": "integer"
        },
        "measured_cases": {
          "type": "integer"
        },
        "unsupported_cases": {
          "type": "integer"
        },
        "failed_cases": {
          "type": "integer"
        },
        "requested_points": {
          "type": "integer"
        },
        "terminal_points": {
          "type": "integer"
        },
        "measured_points": {
          "type": "integer"
        },
        "covered_skus": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "kv_requested_cases": {
          "type": "integer"
        },
        "kv_measured_cases": {
          "type": "integer"
        }
      },
      "required": [
        "run_id",
        "run_attempt",
        "generated_at",
        "conclusion",
        "source_sha",
        "requested_cases",
        "terminal_cases",
        "measured_cases",
        "unsupported_cases",
        "failed_cases",
        "requested_points",
        "terminal_points",
        "measured_points",
        "covered_skus"
      ],
      "additionalProperties": false
    },
    "coverage": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "series": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "kv": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "version",
    "run",
    "coverage",
    "series"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "version": 1,
  "run": {
    "run_id": "123456789",
    "run_attempt": 1,
    "generated_at": "2026-08-08T03:00:00Z",
    "conclusion": "success",
    "source_sha": "0123456789abcdef",
    "requested_cases": 12,
    "terminal_cases": 12,
    "measured_cases": 10,
    "unsupported_cases": 2,
    "failed_cases": 0,
    "requested_points": 48,
    "terminal_points": 48,
    "measured_points": 40,
    "covered_skus": [
      "h200_sxm"
    ],
    "kv_requested_cases": 4,
    "kv_measured_cases": 4
  },
  "coverage": [],
  "series": [],
  "kv": []
}

Scroll to inspect the full example.

400

version is missing or unsupported.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unknown version"
}
404

No stored or discoverable run exists.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
502

Upstream sweep discovery is unavailable and no stored fallback exists.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unavailable"
}
503

Upstream sweep processing is temporarily unavailable.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unavailable"
}
500

The stored run query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/collectivex/runsList CollectiveX runs

Returns progressively discovered run summaries. discovery_complete=false means clients may poll while older runs are still being discovered.

Parameters

GET /api/v1/collectivex/runs: Parameters
NameLocationTypeRequirementDescriptionExample
versionqueryenumRequiredCollectiveX contract version.1

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/collectivex/runs?version=1'

Responses

CollectiveXRunList
200

Version, run summaries, and discovery state.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "version": {
      "type": "integer"
    },
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "string"
          },
          "run_attempt": {
            "type": "integer"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time"
          },
          "conclusion": {
            "type": [
              "string",
              "null"
            ]
          },
          "covered_skus": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "requested_cases": {
            "type": "integer"
          },
          "measured_cases": {
            "type": "integer"
          },
          "requested_points": {
            "type": "integer"
          },
          "terminal_points": {
            "type": "integer"
          },
          "terminal_counts": {
            "type": "object",
            "properties": {
              "measured": {
                "type": "integer"
              },
              "unsupported": {
                "type": "integer"
              },
              "failed": {
                "type": "integer"
              }
            },
            "required": [
              "measured",
              "unsupported",
              "failed"
            ],
            "additionalProperties": false
          },
          "kv_cases": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "integer"
              },
              "measured": {
                "type": "integer"
              }
            },
            "required": [
              "requested",
              "measured"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "run_id",
          "run_attempt",
          "generated_at",
          "conclusion",
          "covered_skus",
          "requested_cases",
          "measured_cases",
          "requested_points",
          "terminal_points",
          "terminal_counts"
        ],
        "additionalProperties": false
      }
    },
    "discovery_complete": {
      "type": "boolean"
    }
  },
  "required": [
    "version",
    "runs",
    "discovery_complete"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "version": 1,
  "runs": [
    {
      "run_id": "123456789",
      "run_attempt": 1,
      "generated_at": "2026-08-08T03:00:00Z",
      "conclusion": "success",
      "covered_skus": [
        "h200_sxm"
      ],
      "requested_cases": 12,
      "measured_cases": 10,
      "requested_points": 48,
      "terminal_points": 48,
      "terminal_counts": {
        "measured": 40,
        "unsupported": 8,
        "failed": 0
      },
      "kv_cases": {
        "requested": 4,
        "measured": 4
      }
    }
  ],
  "discovery_complete": true
}

Scroll to inspect the full example.

400

version is missing or unsupported.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unknown version"
}
502

Discovery failed and no stored run list exists.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unavailable"
}
503

Discovery is temporarily unavailable.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unavailable"
}
500

The stored run list query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/collectivex/runs/{runId}Read a CollectiveX run

Returns one positive numeric run ID as a versioned CollectiveX dataset, discovering and ingesting it on demand when possible.

Parameters

GET /api/v1/collectivex/runs/{runId}: Parameters
NameLocationTypeRequirementDescriptionExample
runIdpathintegerRequiredPositive GitHub Actions run ID.123456789
versionqueryenumRequiredCollectiveX contract version.1

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/collectivex/runs/123456789?version=1'

Responses

CollectiveXDataset
200

The requested CollectiveX dataset.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "version": {
      "type": "integer"
    },
    "run": {
      "type": "object",
      "properties": {
        "run_id": {
          "type": "string"
        },
        "run_attempt": {
          "type": "integer"
        },
        "generated_at": {
          "type": "string",
          "format": "date-time"
        },
        "conclusion": {
          "type": [
            "string",
            "null"
          ]
        },
        "source_sha": {
          "type": "string"
        },
        "requested_cases": {
          "type": "integer"
        },
        "terminal_cases": {
          "type": "integer"
        },
        "measured_cases": {
          "type": "integer"
        },
        "unsupported_cases": {
          "type": "integer"
        },
        "failed_cases": {
          "type": "integer"
        },
        "requested_points": {
          "type": "integer"
        },
        "terminal_points": {
          "type": "integer"
        },
        "measured_points": {
          "type": "integer"
        },
        "covered_skus": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "kv_requested_cases": {
          "type": "integer"
        },
        "kv_measured_cases": {
          "type": "integer"
        }
      },
      "required": [
        "run_id",
        "run_attempt",
        "generated_at",
        "conclusion",
        "source_sha",
        "requested_cases",
        "terminal_cases",
        "measured_cases",
        "unsupported_cases",
        "failed_cases",
        "requested_points",
        "terminal_points",
        "measured_points",
        "covered_skus"
      ],
      "additionalProperties": false
    },
    "coverage": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "series": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "kv": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "version",
    "run",
    "coverage",
    "series"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "version": 1,
  "run": {
    "run_id": "123456789",
    "run_attempt": 1,
    "generated_at": "2026-08-08T03:00:00Z",
    "conclusion": "success",
    "source_sha": "0123456789abcdef",
    "requested_cases": 12,
    "terminal_cases": 12,
    "measured_cases": 10,
    "unsupported_cases": 2,
    "failed_cases": 0,
    "requested_points": 48,
    "terminal_points": 48,
    "measured_points": 40,
    "covered_skus": [
      "h200_sxm"
    ],
    "kv_requested_cases": 4,
    "kv_measured_cases": 4
  },
  "coverage": [],
  "series": [],
  "kv": []
}

Scroll to inspect the full example.

400

version or runId is invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unknown version or run id"
}
404

The run does not exist.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
502

The run cannot be fetched from the upstream source.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unavailable"
}
503

Upstream processing is temporarily unavailable.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Unavailable"
}
500

The run query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}

Diagnostic reads

Per-result trace, cache, request, sibling, and server metric diagnostics.

GETBeta/api/v1/agentic-aggregatesRead agentic aggregate percentiles

Returns ISL, OSL, KV-cache utilization, and prefix-cache hit-rate percentiles keyed by benchmark result ID. IDs are deduplicated and at most 200 are accepted.

Parameters

GET /api/v1/agentic-aggregates: Parameters
NameLocationTypeRequirementDescriptionExample
idsquerycomma-separated integersRequiredOne to 200 positive benchmark result IDs.421,422

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/agentic-aggregates?ids=421,422'

Responses

AgenticAggregateMap
200

Result IDs mapped to aggregate percentiles or null metric groups.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "isl": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mean": {
                "type": "number"
              },
              "p50": {
                "type": "number"
              },
              "p75": {
                "type": "number"
              },
              "p90": {
                "type": "number"
              },
              "p95": {
                "type": "number"
              },
              "p99": {
                "type": "number"
              },
              "n": {
                "type": "integer"
              }
            },
            "required": [
              "mean",
              "p50",
              "p75",
              "p90",
              "p95",
              "p99",
              "n"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "osl": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mean": {
                "type": "number"
              },
              "p50": {
                "type": "number"
              },
              "p75": {
                "type": "number"
              },
              "p90": {
                "type": "number"
              },
              "p95": {
                "type": "number"
              },
              "p99": {
                "type": "number"
              },
              "n": {
                "type": "integer"
              }
            },
            "required": [
              "mean",
              "p50",
              "p75",
              "p90",
              "p95",
              "p99",
              "n"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "kvCacheUtil": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mean": {
                "type": "number"
              },
              "p50": {
                "type": "number"
              },
              "p75": {
                "type": "number"
              },
              "p90": {
                "type": "number"
              },
              "p95": {
                "type": "number"
              },
              "p99": {
                "type": "number"
              },
              "n": {
                "type": "integer"
              }
            },
            "required": [
              "mean",
              "p50",
              "p75",
              "p90",
              "p95",
              "p99",
              "n"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "prefixCacheHitRate": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mean": {
                "type": "number"
              },
              "p50": {
                "type": "number"
              },
              "p75": {
                "type": "number"
              },
              "p90": {
                "type": "number"
              },
              "p95": {
                "type": "number"
              },
              "p99": {
                "type": "number"
              },
              "n": {
                "type": "integer"
              }
            },
            "required": [
              "mean",
              "p50",
              "p75",
              "p90",
              "p95",
              "p99",
              "n"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      }
    },
    "required": [
      "id",
      "isl",
      "osl",
      "kvCacheUtil",
      "prefixCacheHitRate"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
{
  "421": {
    "id": 421,
    "isl": {
      "mean": 18320,
      "p50": 16440,
      "p75": 20110,
      "p90": 24880,
      "p95": 27940,
      "p99": 31900,
      "n": 512
    },
    "osl": null,
    "kvCacheUtil": null,
    "prefixCacheHitRate": null
  }
}

Scroll to inspect the full example.

400

ids is missing, malformed, or exceeds 200 unique IDs.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "ids query param is required"
}
500

The aggregate query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/benchmark-siblingsRead sibling benchmark points

Returns the benchmark SKU and every point in the same hardware, framework, model, precision, method, benchmark type, and workflow run. Siblings may have different workloads. is_current is true only for the requested result ID; false does not mean stale, invalid, or superseded.

Parameters

GET /api/v1/benchmark-siblings: Parameters
NameLocationTypeRequirementDescriptionExample
idqueryintegerRequiredPositive benchmark result ID.421

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/benchmark-siblings?id=421'

Responses

BenchmarkSiblings
200

SKU metadata and sibling navigation rows.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "sku": {
      "type": "object",
      "additionalProperties": true
    },
    "siblings": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "sku",
    "siblings"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "sku": {
    "hardware": "h200_sxm",
    "framework": "vllm",
    "model": "dsr1",
    "precision": "fp8",
    "spec_method": "none",
    "benchmark_type": "agentic_traces",
    "github_run_id": 123456789,
    "date": "2026-08-08",
    "dataset_slug": "cc-traces-weka"
  },
  "siblings": [
    {
      "id": 421,
      "conc": 32,
      "offload_mode": "off",
      "decode_tp": 8,
      "decode_ep": 1,
      "decode_pp": null,
      "decode_dcp_size": 8,
      "decode_pcp_size": 1,
      "decode_dp_attention": false,
      "decode_num_workers": 1,
      "prefill_tp": 8,
      "prefill_ep": 1,
      "prefill_pp": null,
      "prefill_dcp_size": 8,
      "prefill_pcp_size": 1,
      "prefill_dp_attention": false,
      "prefill_num_workers": 1,
      "num_prefill_gpu": 0,
      "num_decode_gpu": 8,
      "disagg": false,
      "is_multinode": false,
      "tput_per_gpu": 128.4,
      "total_requests": 320,
      "is_current": true,
      "has_trace": true
    }
  ]
}

Scroll to inspect the full example.

400

id is missing or invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "id is required (benchmark_result_id)"
}
404

No benchmark result has this ID.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The sibling query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/derived-agentic-metricsRead derived agentic metrics

Returns normalized interactivity percentiles keyed by benchmark result ID. IDs are deduplicated and at most 200 are accepted.

Parameters

GET /api/v1/derived-agentic-metrics: Parameters
NameLocationTypeRequirementDescriptionExample
idsquerycomma-separated integersRequiredOne to 200 positive benchmark result IDs.421,422

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/derived-agentic-metrics?ids=421,422'

Responses

DerivedAgenticMetricMap
200

Result IDs mapped to p75 and p90 normalized interactivity.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "p75_e2e_norm_intvty": {
        "type": [
          "number",
          "null"
        ]
      },
      "p90_e2e_norm_intvty": {
        "type": [
          "number",
          "null"
        ]
      }
    },
    "required": [
      "id",
      "p75_e2e_norm_intvty",
      "p90_e2e_norm_intvty"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
{
  "421": {
    "id": 421,
    "p75_e2e_norm_intvty": 31.2,
    "p90_e2e_norm_intvty": 24.8
  }
}
400

ids is missing, malformed, or exceeds 200 unique IDs.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "ids query param is required"
}
500

The derived metric query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/request-timelineRead a request timeline

Returns a versioned benchmark window and per-request replay identity, source provenance, dispatch, acknowledgement, completion, token, phase, worker, and cancellation timing.

Parameters

GET /api/v1/request-timeline: Parameters
NameLocationTypeRequirementDescriptionExample
idqueryintegerRequiredPositive benchmark result ID.421

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/request-timeline?id=421'

Responses

RequestTimeline
200

Timeline metadata and request records. Nanosecond event fields are offsets from startNs.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "version": {
      "type": "integer"
    },
    "startNs": {
      "type": "integer"
    },
    "endNs": {
      "type": "integer"
    },
    "durationS": {
      "type": "number"
    },
    "requests": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "string"
          },
          "ri": {
            "type": "integer"
          },
          "ti": {
            "type": "integer"
          },
          "srcTrace": {
            "type": "string"
          },
          "srcOuter": {
            "type": "integer"
          },
          "srcInner": {
            "type": "integer"
          },
          "srcKind": {
            "type": "string"
          },
          "wid": {
            "type": "string"
          },
          "ad": {
            "type": "integer"
          },
          "phase": {
            "type": "string"
          },
          "credit": {
            "type": "integer"
          },
          "start": {
            "type": "integer"
          },
          "ack": {
            "type": [
              "number",
              "null"
            ]
          },
          "end": {
            "type": "integer"
          },
          "ttftMs": {
            "type": [
              "number",
              "null"
            ]
          },
          "tpotMs": {
            "type": [
              "number",
              "null"
            ]
          },
          "isl": {
            "type": [
              "number",
              "null"
            ]
          },
          "osl": {
            "type": [
              "number",
              "null"
            ]
          },
          "cancelled": {
            "type": "boolean"
          }
        },
        "required": [
          "cid",
          "ti",
          "wid",
          "ad",
          "phase",
          "credit",
          "start",
          "ack",
          "end",
          "ttftMs",
          "tpotMs",
          "isl",
          "osl",
          "cancelled"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "version",
    "startNs",
    "endNs",
    "durationS",
    "requests"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "version": 6,
  "startNs": 1000000000,
  "endNs": 2400000000,
  "durationS": 1.4,
  "requests": [
    {
      "cid": "trace-018",
      "ri": 0,
      "ti": 0,
      "wid": "7",
      "ad": 0,
      "phase": "profiling",
      "credit": 0,
      "start": 1200000,
      "ack": 1800000,
      "end": 420000000,
      "ttftMs": 42.3,
      "tpotMs": 18.1,
      "isl": 18320,
      "osl": 410,
      "cancelled": false
    }
  ]
}

Scroll to inspect the full example.

400

id is missing or invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "id is required (benchmark_result_id)"
}
404

No timeline exists for this result.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The timeline query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/server-logRead a benchmark server log

Returns one stored .log/.out file for a benchmark result ID. Use file with a name from server-log-files. Add offset or limit for a bounded chunk; add download=1 to stream the complete selected file as a text attachment.

Parameters

GET /api/v1/server-log: Parameters
NameLocationTypeRequirementDescriptionExample
idqueryintegerRequiredPositive benchmark result ID.421
filequerystringOptionalArtifact-relative filename. Omit it to read the primary/legacy file.results/router.log
offsetqueryintegerOptionalZero-based character offset. Supplying offset or limit enables chunked mode.0
limitqueryintegerOptionalChunk size in characters, from 1 to 262144. Defaults to 65536.65536
downloadqueryintegerOptionalSet to 1 to stream the complete selected file as a text attachment. Cannot be combined with offset or limit.1

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/server-log?id=421&file=results%2Frouter.log&offset=0&limit=65536'

Responses

ServerLog | ServerLogChunk | text/plain attachment
200

Benchmark result ID and server log text, plus range metadata in chunked mode.

Media type: application/json

Response shape

Code
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "serverLog": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "serverLog"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "fileName": {
          "type": "string"
        },
        "serverLog": {
          "type": "string"
        },
        "offset": {
          "type": "integer"
        },
        "nextOffset": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "fileName",
        "serverLog",
        "offset",
        "nextOffset"
      ],
      "additionalProperties": false
    }
  ]
}

Scroll to inspect the full example.

Response example

Code
{
  "id": 421,
  "fileName": "results/router.log",
  "serverLog": "INFO router initialized\n",
  "offset": 0,
  "nextOffset": 24
}
400

id is missing or invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "id is required (benchmark_result_id)"
}
404

No server log exists for this result.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The server log query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/server-log-searchSearch complete benchmark logs

Runs a literal, case-insensitive search across every stored .log/.out file for one benchmark result. The bounded response contains contextual snippets without transferring complete log files.

Parameters

GET /api/v1/server-log-search: Parameters
NameLocationTypeRequirementDescriptionExample
idqueryintegerRequiredPositive benchmark result ID.421
qquerystringRequiredLiteral search text, from 1 to 256 characters.router ready
limitqueryintegerOptionalMaximum matches to return, from 1 to 100. Defaults to 50.50

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/server-log-search?id=421&q=router%20ready&limit=50'

Responses

ServerLogSearchResult
200

Bounded matches with filenames, character offsets, and contextual text.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "query": {
      "type": "string"
    },
    "matches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string"
          },
          "offset": {
            "type": "integer"
          },
          "before": {
            "type": "string"
          },
          "match": {
            "type": "string"
          },
          "after": {
            "type": "string"
          }
        },
        "required": [
          "fileName",
          "offset",
          "before",
          "match",
          "after"
        ],
        "additionalProperties": false
      }
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "query",
    "matches",
    "truncated"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "id": 421,
  "query": "router ready",
  "matches": [
    {
      "fileName": "results/router.log",
      "offset": 128,
      "before": "INFO ",
      "match": "router ready",
      "after": " on port 8000\n"
    }
  ],
  "truncated": false
}

Scroll to inspect the full example.

400

The search parameters are invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Invalid query"
}
500

The complete-log search failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/server-log-filesList stored benchmark log files

Lists every .log and .out filename retained from the matching server-log artifact. Paths are returned relative to the artifact root, with the primary file first.

Parameters

GET /api/v1/server-log-files: Parameters
NameLocationTypeRequirementDescriptionExample
idqueryintegerRequiredPositive benchmark result ID.421

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/server-log-files?id=421'

Responses

ServerLogFileNames
200

Artifact-relative .log/.out filenames.

Media type: application/json

Response shape

Code
{
  "type": "array",
  "items": {
    "type": "string"
  }
}

Response example

Code
[
  "results/server.log",
  "results/benchmark.log",
  "results/router.log"
]
400

id is missing or invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "id is required (benchmark_result_id)"
}
404

No log bundle exists for this result.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The log filename query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/log-availabilityCheck server-log availability

Returns only benchmark result IDs that have a stored server log. IDs are deduplicated and at most 500 are accepted.

Parameters

GET /api/v1/log-availability: Parameters
NameLocationTypeRequirementDescriptionExample
idsquerycomma-separated integersRequiredOne to 500 positive benchmark result IDs.421,422

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/log-availability?ids=421,422'

Responses

LogAvailabilityMap
200

Available result IDs mapped to true. Missing keys have no server log.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "additionalProperties": {
    "type": "boolean"
  }
}

Response example

Code
{
  "421": true
}
400

ids is missing, malformed, or exceeds 500 unique IDs.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Expected ids as comma-separated positive integers"
}
500

The server-log availability query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/trace-availabilityCheck trace availability

Returns only benchmark result IDs that have a stored trace. IDs are deduplicated and at most 500 are accepted.

Parameters

GET /api/v1/trace-availability: Parameters
NameLocationTypeRequirementDescriptionExample
idsquerycomma-separated integersRequiredOne to 500 positive benchmark result IDs.421,422

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/trace-availability?ids=421,422'

Responses

TraceAvailabilityMap
200

Available result IDs mapped to true. Missing keys have no trace.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "additionalProperties": {
    "type": "boolean"
  }
}

Response example

Code
{
  "421": true
}
400

ids is missing, malformed, or exceeds 500 unique IDs.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "ids query param is required"
}
500

The trace availability query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/trace-histogramsRead trace histograms

Returns input and output token count arrays for each benchmark result ID. IDs are deduplicated and at most 200 are accepted.

Parameters

GET /api/v1/trace-histograms: Parameters
NameLocationTypeRequirementDescriptionExample
idsquerycomma-separated integersRequiredOne to 200 positive benchmark result IDs.421,422

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/trace-histograms?ids=421,422'

Responses

TraceHistogramMap
200

Result IDs mapped to raw ISL and OSL samples.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "isl": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "osl": {
        "type": "array",
        "items": {
          "type": "number"
        }
      }
    },
    "required": [
      "id",
      "isl",
      "osl"
    ],
    "additionalProperties": false
  }
}

Scroll to inspect the full example.

Response example

Code
{
  "421": {
    "id": 421,
    "isl": [
      18220,
      19340,
      15110
    ],
    "osl": [
      410,
      380,
      512
    ]
  }
}

Scroll to inspect the full example.

400

ids is missing, malformed, or exceeds 200 unique IDs.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "ids query param is required"
}
500

The histogram query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}
GETBeta/api/v1/trace-server-metricsRead trace server metrics

Returns point metadata and chart-ready aggregate time series for cache usage, queue depth, prefill and decode throughput, and prompt-token sources. metricSources contains source descriptors; source-specific arrays are loaded by the point-detail UI only when selected.

Parameters

GET /api/v1/trace-server-metrics: Parameters
NameLocationTypeRequirementDescriptionExample
idqueryintegerRequiredPositive benchmark result ID.421

Request

Code
curl -sS 'https://inferencex.semianalysis.com/api/v1/trace-server-metrics?id=421'

Responses

TraceServerMetrics
200

Point metadata, window bounds, and server metric series.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "additionalProperties": true
    },
    "startNs": {
      "type": "integer"
    },
    "endNs": {
      "type": "integer"
    },
    "durationS": {
      "type": "number"
    },
    "timeslicesCount": {
      "type": "integer"
    },
    "kvCacheUsage": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "prefixCacheHitRate": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "queueDepth": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "promptTokensBySource": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": true
        }
      }
    },
    "prefillTps": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "decodeTps": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "prefixCacheHitsTps": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "hostKvCacheUsage": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "kvCacheUsageByEngine": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "kvCachePoolTokens": {
      "type": [
        "number",
        "null"
      ]
    },
    "metricSources": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "meta",
    "startNs",
    "endNs",
    "durationS",
    "timeslicesCount",
    "kvCacheUsage",
    "prefixCacheHitRate",
    "queueDepth",
    "promptTokensBySource",
    "prefillTps",
    "decodeTps",
    "prefixCacheHitsTps",
    "hostKvCacheUsage",
    "kvCacheUsageByEngine",
    "kvCachePoolTokens",
    "metricSources"
  ],
  "additionalProperties": false
}

Scroll to inspect the full example.

Response example

Code
{
  "meta": {
    "id": 421,
    "hardware": "h200_sxm",
    "framework": "vllm",
    "model": "dsr1",
    "conc": 32,
    "date": "2026-08-08"
  },
  "startNs": 1000000000,
  "endNs": 2400000000,
  "durationS": 1.4,
  "timeslicesCount": 2,
  "kvCacheUsage": [
    {
      "t": 0,
      "v": 0.44
    }
  ],
  "prefixCacheHitRate": [],
  "queueDepth": [],
  "promptTokensBySource": {},
  "prefillTps": [],
  "decodeTps": [],
  "prefixCacheHitsTps": [],
  "hostKvCacheUsage": [],
  "kvCacheUsageByEngine": [],
  "kvCachePoolTokens": 983040,
  "metricSources": []
}

Scroll to inspect the full example.

400

id is missing or invalid.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "id is required (benchmark_result_id)"
}
404

No server metrics exist for this result.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Not found"
}
500

The server metric query failed.

Media type: application/json

Response shape

Code
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "additionalProperties": true
}

Response example

Code
{
  "error": "Internal server error"
}