curl --request GET \
--url https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 123,
"items": [
{
"created_at": "2023-11-07T05:31:56Z",
"experiment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"result_type": "<string>",
"summary": [
{
"binding_strength": "<string>",
"kd_units": "<string>",
"performance": {
"Positive Control": "better"
},
"positive_control": true,
"replicates": [
{
"replicate": 123,
"binding": "<string>",
"binding_strength": "<string>",
"confidence": "<string>",
"expression": "<string>",
"fit_quality": "good",
"kd": 123,
"kd_app": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"koff": 123,
"koff_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"koff_method": "<string>",
"kon": 123,
"kon_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"kon_method": "<string>",
"method": "<string>",
"rmse_max_signal_pct": 1.2
}
],
"sequence": {
"aa_string": "EVQLVESGGGLVQPGGSLRLSCAAS",
"control": true,
"metadata": "<unknown>",
"name": "mAb1"
},
"result_type": "affinity",
"binding": "<string>",
"binding_model": [
"standard"
],
"concentration_display": "<string>",
"concentration_value": 123,
"expression": "<string>",
"fit_quality": "good",
"kd_app": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"kd_log_std": 123,
"kd_mean": 123,
"koff_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"koff_log_std": 123,
"koff_mean": 123,
"kon_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"kon_log_std": 123,
"kon_mean": 123,
"method": [
"<string>"
],
"place": 123,
"rmse_max_signal_pct": 1.2,
"target": {
"name": "Human PD-L1",
"sequence": "<string>",
"supplier_url": "<string>",
"target_catalog_id": "019a03da-b87f-7e15-8b02-cef171c9871d"
}
}
],
"title": "<string>",
"data_package_url": "<string>"
}
],
"offset": 123,
"total": 123
}{
"error": "experiment not found",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}{
"error": "experiment not found",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}{
"error": "experiment not found",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}List results for an experiment
Returns all analysis results associated with a specific experiment.
Results appear when the experiment’s results_status field reaches
Partial or All. Supports pagination via limit and offset query
parameters.
Use this endpoint when you need results for a single experiment without
filtering the global /results list. The response includes the same
ResultInfo structure as the global endpoint, scoped to the
specified experiment.
curl --request GET \
--url https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 123,
"items": [
{
"created_at": "2023-11-07T05:31:56Z",
"experiment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"result_type": "<string>",
"summary": [
{
"binding_strength": "<string>",
"kd_units": "<string>",
"performance": {
"Positive Control": "better"
},
"positive_control": true,
"replicates": [
{
"replicate": 123,
"binding": "<string>",
"binding_strength": "<string>",
"confidence": "<string>",
"expression": "<string>",
"fit_quality": "good",
"kd": 123,
"kd_app": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"koff": 123,
"koff_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"koff_method": "<string>",
"kon": 123,
"kon_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"kon_method": "<string>",
"method": "<string>",
"rmse_max_signal_pct": 1.2
}
],
"sequence": {
"aa_string": "EVQLVESGGGLVQPGGSLRLSCAAS",
"control": true,
"metadata": "<unknown>",
"name": "mAb1"
},
"result_type": "affinity",
"binding": "<string>",
"binding_model": [
"standard"
],
"concentration_display": "<string>",
"concentration_value": 123,
"expression": "<string>",
"fit_quality": "good",
"kd_app": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"kd_log_std": 123,
"kd_mean": 123,
"koff_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"koff_log_std": 123,
"koff_mean": 123,
"kon_1to1": {
"value": 123,
"ci_high": 123,
"ci_low": 123
},
"kon_log_std": 123,
"kon_mean": 123,
"method": [
"<string>"
],
"place": 123,
"rmse_max_signal_pct": 1.2,
"target": {
"name": "Human PD-L1",
"sequence": "<string>",
"supplier_url": "<string>",
"target_catalog_id": "019a03da-b87f-7e15-8b02-cef171c9871d"
}
}
],
"title": "<string>",
"data_package_url": "<string>"
}
],
"offset": 123,
"total": 123
}{
"error": "experiment not found",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}{
"error": "experiment not found",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}{
"error": "experiment not found",
"request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
}Authorizations
Biscuit-based bearer token. Obtain tokens from the Adaptyv Portal or via the /tokens endpoint. Tokens encode organization membership and role-based capabilities; the API verifies the token's cryptographic signature and authorization claims before processing requests. Use /tokens/attenuate to create restricted tokens for delegation.
Path Parameters
Experiment identifier (UUID)
Query Parameters
Maximum number of items to return (1-100, default 50).
Number of items to skip (default 0).
Filter expression in s-expression syntax.
Comparison: eq(field,value), neq(field,value), gt(field,value),
lt(field,value), gte(field,value), lte(field,value),
contains(field,substring)
Range/set: between(field,lo,hi), in(field,v1,v2,...)
Logical: and(expr1,expr2,...), or(expr1,expr2,...), not(expr)
Null checks: is_null(field), is_not_null(field)
JSONB access: at(field,key) — e.g. eq(at(metadata,score),42)
Cast functions: float(expr), int(expr), text(expr),
timestamp(expr), date(expr)
Example: and(gte(created_at,2026-01-01),eq(status,draft))
Free-text search term applied to searchable columns.
Sort expression. Supports multi-column sort (comma-separated, up to 8), JSONB path access, and type casts.
Three accepted surface forms produce the same ordering:
- Canonical —
desc(field)/asc(field); also wraps casts andat(...)JSONB path access. Example:asc(date(at(metadata,start_date))). - Prefix short form —
-field(descending),+fieldor barefield(ascending). GitHub / Stripe / Jira convention. Bare field only; no casts. - Suffix short form —
field:asc/field:desc. Also bare field.
Examples: -created_at, -created_at,+name, created_at:desc,
desc(created_at),asc(name), asc(at(metadata,score)).
Response
Results for the experiment
Paginated list response with offset-based navigation metadata.
All list endpoints return this shape. Use offset and limit query
parameters to page through results; total reports how many items
match the query across all pages.
Number of items in this response.
The page of results.
Show child attributes
Show child attributes
Offset used for this page (mirrors the offset query parameter).
Total number of items matching the query (across all pages).
Was this page helpful?