experiments

Estimate experiment cost

Calculates the estimated cost for an experiment without creating it. Useful for previewing costs before submission.

Request Body

Accepts an experiment_spec matching the creation endpoint format:

{
  "experiment_spec": {
    "experiment_type": "screening",
    "method": "bli",
    "target_id": "019a03da-b87f-7e15-8b02-cef171c9871d",
    "sequences": {
      "seq1": "MKTL...",
      "seq2": "EVQL..."
    },
    "n_replicates": 3
  }
}

Response

Returns a detailed cost breakdown including:

  • pricing_version: The pricing rules applied (e.g., "v1_2026-01-20")
  • assay: Per-experiment-type costs with base and replicate pricing
  • materials: Target material costs (for binding experiments)
  • total_cents: Sum of all costs in USD cents

Complete Estimate Response

When the target has self-service pricing:

{
  "breakdown": {
    "pricing_version": "v1_2026-01-20",
    "assay": { "name": "screening", "base_cents": 14900, "replicate_addon_cents": 5800, "subtotal_cents": 103500 },
    "materials": { "target": { "name": "Human PD-L1", "target_catalog_id": "019a03da-b87f-7e15-8b02-cef171c9871d" }, "price_per_sequence_cents": 500, "subtotal_cents": 2500 },
    "total_cents": 106000
  },
  "incomplete": null,
  "warnings": []
}

Incomplete Estimate Response

When the target lacks self-service pricing (e.g., custom proteins), you'll receive an incomplete estimate with assay costs but materials_unavailable:

{
  "breakdown": null,
  "incomplete": {
    "pricing_version": "v1_2026-01-20",
    "assay": { "name": "screening", "base_cents": 14900, "replicate_addon_cents": 5800, "subtotal_cents": 103500 },
    "materials_unavailable": {
      "target": { "name": "This target", "target_catalog_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" },
      "reason": "This target is not yet onboarded to self-service pricing. You'll receive a quote with full price information."
    }
  },
  "warnings": []
}

Use GET /targets?selfservice_only=true to list targets with complete pricing.

Notes

  • All prices exclude VAT; taxes calculated at invoicing based on jurisdiction
  • Requires authentication with experiment read permission
  • Does not create an experiment
  • Pricing is based on the current date (not a future experiment date)
  • Targets without self-service pricing return incomplete estimates (not errors)
  • Experiments created before pricing v1 (2026-01-20) cannot be estimated
post/api/v1/experiments/cost-estimate

Request

  • Base URL
    https://devs.adaptyvbio.com
  • URL
    https://devs.adaptyvbio.com/api/v1/experiments/cost-estimate
  • Auth
    HTTP 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"
  }
}

Response

Cost estimate calculated

warningsstring[]

Warnings about the estimate (e.g., unknown target, pricing limitations)

Example response

{
  "breakdown": {
    "assay": {
      "experiment_type": "screening",
      "n_replicates": 3,
      "replicate_price_cents": 2900,
      "sequence_count": 5,
      "subtotal_cents": 103500,
      "unit_price_cents": 14900
    },
    "materials": {
      "price_per_sequence_cents": 500,
      "sequence_count": 5,
      "subtotal_cents": 2500,
      "target": {
        "name": "Human PD-L1",
        "target_catalog_id": "019a03da-b87f-7e15-8b02-cef171c9871d"
      }
    },
    "total_cents": 106000
  },
  "incomplete": {
    "assay": {
      "experiment_type": "screening",
      "n_replicates": 3,
      "replicate_price_cents": 2900,
      "sequence_count": 5,
      "subtotal_cents": 103500,
      "unit_price_cents": 14900
    },
    "materials_unavailable": {
      "reason": "Human PD-L1 is not yet onboarded to self-service pricing. You'll receive a quote with full price information.",
      "target": {
        "name": "Human PD-L1",
        "target_catalog_id": "019a03da-b87f-7e15-8b02-cef171c9871d"
      }
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.