API Reference

Base URL: https://api.fermvyne.com. All requests require an Authorization: Bearer <key> header.

Authentication

API keys are prefixed with fvyn_. Generate keys from your dashboard. Pass keys in the Authorization header:

HTTP Header
Authorization: Bearer fvyn_your_api_key

POST /v1/design

Submit an enzyme design request. Returns a job ID for async polling or direct results for small requests.

POST /v1/design

Request body (JSON):

JSON Request
{
  "substrate": "string (SMILES, required)",
  "product": "string (SMILES, required)",
  "ec_number": "string (optional, e.g. '1.1.1.1')",
  "targets": {
    "tm_min": 60,       // minimum Tm in °C (optional)
    "host": "ecoli",    // ecoli | pichia | bacillus
    "cofactor": "NADPH", // cofactor preference (optional)
    "n_candidates": 12 // 1-20, default 5
  }
}

Response (JSON):

JSON Response
{
  "job_id": "j_8xkp42",
  "status": "complete",
  "candidates": [
    {
      "rank": 1,
      "fasta": "MKVLSGEDK...",
      "tm_estimate": 67.4,
      "expression_score": "high",  // high | medium | low
      "solubility_prob": 0.91,
      "confidence_flag": null      // or string if low-confidence
    }
  ]
}

GET /v1/results/{job_id}

Retrieve results for a previously submitted job. Use this for polling when the design request returns "status": "running".

GET /v1/results/{job_id}

Returns the same response schema as POST /v1/design with updated status: running | complete | failed.

POST /v1/pathway

Co-design multiple enzymes across a metabolic route simultaneously. Available on Lab plan. Checks cofactor stoichiometry across the full route.

POST /v1/pathway

Request body (JSON):

JSON Request
{
  "steps": [
    {
      "substrate": "SMILES",
      "product": "SMILES",
      "cofactor": "NADPH"
    }
  ],
  "host": "ecoli",
  "cofactor_balance": true
}

Biophysical Scoring

Each candidate sequence ships with three prediction scores:

  • tm_estimate — thermostability melting point estimate in °C, validated for E. coli, Pichia, and Bacillus hosts
  • expression_score — categorical: high / medium / low for the specified expression host
  • solubility_prob — probability 0.0–1.0 that the protein will be found in the soluble fraction at standard expression conditions

If a request falls outside the model's training distribution, a confidence_flag string is returned explaining the limitation. See the Science page for stated scope boundaries.

Rate Limits

Rate limits by plan:

  • Free: 10 designs/month, 1 concurrent job
  • Pro: unlimited designs, 5 concurrent jobs, priority queue
  • Lab: unlimited designs, 20 concurrent jobs, dedicated queue

Integrations

The Python SDK supports Benchling ELN integration via the fermvyne.integrations.benchling module. Configure your Benchling API key once and push design results directly to a specified notebook entry.

Python
from fermvyne.integrations import benchling

benchling.push_results(
  result=result,
  benchling_api_key=os.environ["BENCHLING_KEY"],
  notebook_entry_id="etr_abc123"
)