Create experiment
Creates a new experiment request for the Adaptyv Foundry platform.
The payload captures the target (from the catalog), antibody sequences, replicate plan, assay parameters, optional metadata, and an optional webhook for notifications. By default, experiments are created in Draft status so clients can review inputs before submission.
Set skip_draft: true to bypass Draft status and submit directly for processing. This is useful for automated pipelines with pre-validated payloads that don't require manual review. The experiment will be created in "Waiting for confirmation" status instead of Draft.
API-originated experiments are automatically assigned to the organization's API submissions project for traceability.
ExperimentSpec fields
Validation is strict: fields that are not applicable to a given experiment type (e.g., method on a non-binding type) cause a 400 rejection. Multiple validation errors are accumulated and returned together so callers can fix everything in one round-trip.
| Field | Type | Description |
|---|---|---|
| experiment_type | string | Required. One of affinity, screening, thermostability, fluorescence, expression, epitope_binning, enzyme_activity. |
| method | string | Required for affinity/screening (bli or spr). Rejected for all other types. |
| target_id | string | Target UUID from the catalog. Required for affinity, screening, and epitope_binning. Rejected for non-binding types. |
| sequences | object | Required. Map of sequence name to amino acid string. epitope_binning requires exactly 4-28 sequences in multiples of 4. |
| n_replicates | integer | Optional for most types (default 3, range 1-5). Rejected for epitope_binning. |
| antigen_concentrations | array | affinity only; optional, defaults to [1000.0, 316.2, 100.0, 31.6, 0.0] nM. |
| parameters | object | Optional. Experiment-specific settings |
Sequence Formats
The sequences field accepts two formats:
Simple format — amino acid string only:
"sequences": {
"seq1": "EVQLVESGGGLVQPGGSLRLSCAAS"
}
Object format — with metadata:
"sequences": {
"seq1": {
"aa_string": "EVQLVESGGGLVQPGGSLRLSCAAS",
"control": false,
"metadata": { "type": "scfv", "tag_location": "C" }
}
}
Example: Affinity (BLI)
Full kinetic characterization measuring on/off rates and KD. Target ID 019a03da-b87f-7e15-8b02-cef171c9871d is Human PD-L1 from the catalog.
{
"name": "PD-L1 affinity panel",
"experiment_spec": {
"experiment_type": "affinity",
"method": "bli",
"target_id": "019a03da-b87f-7e15-8b02-cef171c9871d",
"sequences": {
"pembrolizumab_vh": "QVQLVQSGVEVKKPGASVKVSCKASGYTFTNYYMYWVRQAPGQGLEWMGGINPSNGGTNFNEKFKNRVTLTTDSSTTTAYMELKSLQFDDTAVYYCARRDYRFDMGFDYWGQGTTVTVSS",
"pembrolizumab_vl": "EIVLTQSPATLSLSPGERATLSCRASKGVSTSGYSYLHWYQQKPGQAPRLLIYLASYLESGVPARFSGSGSGTDFTLTISSLEPEDFAVYYCQHSRDLPLTFGGGTKVEIK"
},
"n_replicates": 3,
"antigen_concentrations": [1000.0, 316.2, 100.0, 31.6, 0.0]
},
"webhook_url": "https://example.com/webhook"
}
Example: Screening (SPR)
High-throughput yes/no binding assessment using SPR.
{
"name": "Library screening round 1",
"experiment_spec": {
"experiment_type": "screening",
"method": "spr",
"target_id": "019a03da-b87f-7e15-8b02-cef171c9871d",
"sequences": {
"clone_A1": "EVQLVESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKDRLSITIRPRYYGLDVWGQGTLVTVSS",
"clone_A2": "QVQLVQSGAEVKKPGASVKVSCKASGYTFTSYGISWVRQAPGQGLEWMGWISAYNGNTNYAQKLQGRVTMTTDTSTSTAYMELRSLRSDDTAVYYCARDVGYCTDYSCYFDYWGQGTLVTVSS",
"clone_A3": "EVQLLESGGGLVQPGGSLRLSCAASGFTFSTYAMSWVRQAPGKGLEWVSSISSGGSYIYYADSVKGRFTISRDNAKNSLYLQMNSLRAEDTAVYYCARRPWGYYALDIWGQGTTVTVSS"
},
"n_replicates": 2
}
}
Example: Thermostability
Measures melting temperature (Tm) via differential scanning fluorimetry. No target required.
{
"name": "Lead candidates stability",
"experiment_spec": {
"experiment_type": "thermostability",
"sequences": {
"candidate_1": "QVQLVQSGAEVKKPGASVKVSCKASGYTFTSYAMHWVRQAPGQRLEWMGWINAGNGNTKYSQKFQGRVTITRDTSASTAYMELSSLRSEDTAVYYCARAKFGATGAFDIWGQGTMVTVSS",
"candidate_2": "EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSS"
},
"n_replicates": 3,
"parameters": {
"buffer": "PBS",
"ph": 7.4
}
}
}
Example: Fluorescence
Fluorescence-based protein characterization measuring intrinsic properties. No target required.
{
"name": "Fluorescence characterization",
"experiment_spec": {
"experiment_type": "fluorescence",
"sequences": {
"variant_1": "QVQLVQSGAEVKKPGASVKVSCKASGYTFTSYDINWVRQATGQGLEWMGWMNPNSGNTGYAQKFQGRVTMTRDTSISTAYMELRSLRSDDTAVYYCARGGFYGSTIWFDYWGQGTLVTVSS",
"variant_2": "EVQLVESGGGLVQPGGSLRLSCAASGFTFSSYWMSWVRQAPGKGLEWVANIKQDGSEKYYVDSVKGRFTISRDNAKNSLYLQMNSLRAEDTAVYYCARDRYGNYVDYWGQGTLVTVSS"
},
"n_replicates": 3
}
}
Example: Expression
Protein expression screening measuring yield and quality. No target required.
{
"name": "Expression screening",
"experiment_spec": {
"experiment_type": "expression",
"sequences": {
"construct_A": "QVQLVQSGAEVKKPGASVKVSCKASGYTFTSYGISWVRQAPGQGLEWMGWISAYNGNTNYAQKLQGRVTMTTDTSTSTAYMELRSLRSDDTAVYYCARDVGYCTDYSCYFDYWGQGTLVTVSS",
"construct_B": "EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSS"
},
"n_replicates": 2
}
}
Example: With skip_draft=true (Auto-Submit)
Bypass Draft status and submit directly for processing:
{
"name": "Pre-validated batch",
"skip_draft": true,
"experiment_spec": {
"experiment_type": "thermostability",
"sequences": {
"seq1": "EVQLVESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKDRLSITIRPRYYGLDVWGQGTLVTVSS"
},
"n_replicates": 2
}
}
Request
- Base URLhttps://devs.adaptyvbio.com
- URLhttps://devs.adaptyvbio.com/api/v1/experiments
- AuthHTTP bearer
Request body
Example request
{
"experiment_spec": {
"antigen_concentrations": [
1000,
316.2,
100,
31.6,
0
],
"n_replicates": 3,
"target_id": "019a03da-b87f-7e15-8b02-cef171c9871d"
},
"name": "PD-L1 affinity panel",
"payment": {
"method": "x402-exact"
},
"webhook_secret": "a-32-plus-character-shared-secret",
"webhook_url": "https://example.com/webhook"
}Response
Atomic create-and-pay for a machine rail (auto_accept_quote): the (open, unpaid) invoice is finalized and the payment block points at /invoices/{id}/pay where the client settles. Never settles or challenges at create.
Example response
{
"hosted_invoice_url": "https://invoice.stripe.com/i/acct_1234/test_5678",
"payment": {
"hosted_invoice_url": "https://invoice.stripe.com/i/acct_1234/test_5678",
"methods": [
"x402-exact",
"mpp-spt"
],
"pay_url": "/api/v1/invoices/in_1OqLk2LkdIwHu7ix6OboRpXl/pay"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.