---
title: "Get result"
method: GET
path: "/api/v1/results/{result_id}"
tags: ["results"]
---

# Get result

`GET /api/v1/results/{result_id}`

## Request

- Base URL: `https://devs.adaptyvbio.com`
- URL: `https://devs.adaptyvbio.com/api/v1/results/{result_id}`
- Auth: HTTP bearer

Returns a single result with its full `summary`: mean kinetics and the
per-replicate measurements for an affinity result, or the per-sample
melting readouts for a thermostability result. The `data_package_url`
field links to the raw data package, the same one available in the
Foundry portal.

## Path parameters

- `result_id` string, uuid, required

## Response `200`

Result details

- ResultInfo: A completed experiment result: its summarized measurements and a link to the raw data.
  - `created_at` string, date-time, required: When this result was generated (ISO 8601).
  - `data_package_url` string, nullable: Download URL for the raw data package, the same one available in the Foundry portal. Omitted when no package is available.
  - `experiment_id` string, uuid, required: Identifier of the experiment this result belongs to.
  - `id` string, uuid, required: Identifier for this result.
  - `metadata` object, required: Additional metadata beyond the summary.
  - `result_type` string, required: Assay type for this result (e.g. "affinity", "thermostability").
  - `summary` ResultSummary[], required: Per-readout measurements, each tagged by assay type.
    - union: A result readout, tagged by assay type. The `result_type` field selects the variant: `affinity` for binding kinetics, `thermostability` for melting-temperature readouts.
      - object: Binding kinetics from an affinity assay.
        - `binding` string, nullable: Overall binding outcome, rolled up from the replicates ("true", "false", "unknown", "in_progress").
        - `binding_model` string[], nullable: The selected binding model(s), e.g. `["standard"]`, `["bivalent_analyte"]`, `["conformational"]`. Populated only for results carrying the v1 payload.
        - `binding_strength` string, required: Overall binding call, rolled up from the replicates (e.g. "strong", "medium", "weak", "none", "unknown").
        - `concentration_display` string, nullable: Expression concentration for display, in nM (e.g. "12.3", "<5.0", ">100").
        - `concentration_value` number, double, nullable: Expression concentration as a number, in nM, when a point estimate is available.
        - `expression` string, nullable: Expression level for the construct (e.g. "high", "medium", "low").
        - `fit_quality` string, nullable: Overall fit quality, one of "good" / "medium" / "poor".
        - `kd_app` KineticInterval: A kinetic point estimate together with its 95% confidence interval. `ci_low` / `ci_high` are absent when the fit did not yield finite bounds.
          - `ci_high` number, double, nullable: Upper bound of the 95% confidence interval.
          - `ci_low` number, double, nullable: Lower bound of the 95% confidence interval.
          - `value` number, double, required: Point estimate.
        - `kd_log_std` number, double, nullable: Log-scale standard deviation of KD across the replicates.
        - `kd_mean` number, double, nullable: Mean equilibrium dissociation constant (M), averaged across the strong-binding replicates.
        - `kd_units` string, required: Unit for the KD values; always molar (M).
        - `koff_1to1` KineticInterval: A kinetic point estimate together with its 95% confidence interval. `ci_low` / `ci_high` are absent when the fit did not yield finite bounds.
          - `ci_high` number, double, nullable: Upper bound of the 95% confidence interval.
          - `ci_low` number, double, nullable: Lower bound of the 95% confidence interval.
          - `value` number, double, required: Point estimate.
        - `koff_log_std` number, double, nullable: Log-scale standard deviation of koff across the replicates.
        - `koff_mean` number, double, nullable: Mean dissociation rate constant (s⁻¹) across the replicates.
        - `kon_1to1` KineticInterval: A kinetic point estimate together with its 95% confidence interval. `ci_low` / `ci_high` are absent when the fit did not yield finite bounds.
          - `ci_high` number, double, nullable: Upper bound of the 95% confidence interval.
          - `ci_low` number, double, nullable: Lower bound of the 95% confidence interval.
          - `value` number, double, required: Point estimate.
        - `kon_log_std` number, double, nullable: Log-scale standard deviation of kon across the replicates.
        - `kon_mean` number, double, nullable: Mean association rate constant (M⁻¹s⁻¹) across the replicates.
        - `method` string[], nullable: Distinct fitting models used across the replicates (e.g. ["1:1", "2:1"]).
        - `performance` object, required: How this result compares to each of the experiment's positive controls, keyed by control name. Each value is "better", "worse", or null when the comparison is indeterminate.
        - `place` integer, nullable: Rank of this result within its experiment.
        - `positive_control` boolean, required: Whether this result is a positive control.
        - `replicates` AffinityReplicate[], required: The individual replicate measurements behind these aggregates.
          - `binding` string, nullable: Categorical binding outcome for this replicate ("true", "false", "unknown", "in_progress").
          - `binding_strength` string, nullable: Qualitative binding call for this replicate (e.g. "strong", "medium", "weak", "none", "in_progress").
          - `confidence` string, nullable: Confidence grade for the fit. Omitted when the binding call is unknown.
          - `expression` string, nullable: Expression level for the construct in this replicate (e.g. "high", "medium", "low").
          - `fit_quality` string, nullable: Overall fit quality, one of "good" / "medium" / "poor".
          - `kd` number, double, nullable: Equilibrium dissociation constant (M). Omitted when not measurable.
          - `kd_app` KineticInterval: A kinetic point estimate together with its 95% confidence interval. `ci_low` / `ci_high` are absent when the fit did not yield finite bounds.
            - `ci_high` number, double, nullable: Upper bound of the 95% confidence interval.
            - `ci_low` number, double, nullable: Lower bound of the 95% confidence interval.
            - `value` number, double, required: Point estimate.
          - `koff` number, double, nullable: Dissociation rate constant (s⁻¹). Omitted when not measurable.
          - `koff_1to1` KineticInterval: A kinetic point estimate together with its 95% confidence interval. `ci_low` / `ci_high` are absent when the fit did not yield finite bounds.
            - `ci_high` number, double, nullable: Upper bound of the 95% confidence interval.
            - `ci_low` number, double, nullable: Lower bound of the 95% confidence interval.
            - `value` number, double, required: Point estimate.
          - `koff_method` string, nullable: Fitting model used for the koff fit (e.g. "1:1", "2:1").
          - `kon` number, double, nullable: Association rate constant (M⁻¹s⁻¹). Omitted when not measurable.
          - `kon_1to1` KineticInterval: A kinetic point estimate together with its 95% confidence interval. `ci_low` / `ci_high` are absent when the fit did not yield finite bounds.
            - `ci_high` number, double, nullable: Upper bound of the 95% confidence interval.
            - `ci_low` number, double, nullable: Lower bound of the 95% confidence interval.
            - `value` number, double, required: Point estimate.
          - `kon_method` string, nullable: Fitting model used for the kon fit (e.g. "1:1", "2:1").
          - `method` string, nullable: Fitting model used for this replicate (e.g. "1:1", "2:1").
          - `replicate` integer, required: Replicate number, starting at 1.
          - `rmse_max_signal_pct` number, double, nullable: RMSE divided by the maximum measured signal, expressed as a percentage.
        - `rmse_max_signal_pct` number, double, nullable: RMSE divided by the maximum measured signal, expressed as a percentage.
        - `sequence` SequenceEntry, required: Represents a biological sequence to be tested in an experiment. Each sequence represents an antibody or protein to be tested in the experiment. # Example ```json { "name": "mAb1", "aa_string": "EVQLVESGGGLVQPGGSLRLSCAASGFTFS...", "control": false } ```
          - `aa_string` string, required: A validated amino acid sequence string. Contains only the 20 natural amino acids (single-letter codes: A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y) and colons for multichain notation. Input is case-insensitive; stored uppercase. Multichain sequences use colon separators (e.g., `MVLS:EVQL` for a two-chain construct). Invalid characters or empty strings are rejected.
          - `control` boolean: Whether the sequence should be treated as a control well
          - `metadata` unknown
          - `name` string, nullable: Optional name for the sequence (e.g., "mAb1", "scFv-001")
        - `target` TargetReference: A resolved reference to an experiment's target, as shown in the Foundry Portal. This is the single shape every API response uses to name a target: the experiment spec, result readouts, cost-estimate line items, and the internal minimum-sequence admin config all embed it instead of a bare id string. `name` is always present. `target_catalog_id` is present when the target is a catalog product — fetch its full details from `GET /targets/{target_catalog_id}`; its absence indicates a custom target. `sequence` and `supplier_url` are included when available.
          - `name` string, required: The target's display name, as shown in the Foundry Portal.
          - `sequence` string, nullable: The target's amino-acid sequence, when available.
          - `supplier_url` string, nullable: Link to the target's vendor product page, when available.
          - `target_catalog_id` string, uuid, nullable: Identifier of the matching catalog product, when the target is in the catalog; absent for custom targets. Resolve full details via `GET /targets/{target_catalog_id}`.
        - `result_type` 'affinity', required
      - object: Melting-temperature readout from a nanoDSF assay.
        - `bli_result_id` string, uuid, nullable: Identifier of the binding result for the same sample, when the experiment also ran a binding assay.
        - `inflection_pts_for_ratio` number[], required: Inflection temperature (°C) of each unfolding transition, from the ratio curve.
        - `initial_330nm` number, double, nullable: Initial raw fluorescence at 330nm.
        - `onset_pts_for_ratio` number[], required: Onset temperature (°C) of each unfolding transition, from the ratio curve.
        - `sequence` string, nullable: Protein sequence for this readout.
        - `sequence_id` string, uuid, required: Identifier for this readout.
        - `sequence_name` string, nullable: Sample or construct name for this readout.
        - `tm` number, double, nullable: Melting temperature (°C), from the 350nm/330nm fluorescence ratio.
        - `result_type` 'thermostability', required
  - `title` string, required: Human-readable title for this result.

## Other responses

- `401`: Invalid or missing authentication token
- `403`: Insufficient permissions
- `404`: Result not found
- `500`: Internal server error

---

[API](https://skmtc.dev/adaptyvbio/apis/adaptyv-foundry-api.md) - [All operations](https://skmtc.dev/adaptyvbio/apis/adaptyv-foundry-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adaptyvbio/apis/adaptyv-foundry-api/revisions/5a2228f4bd59?raw)
