---
title: "Site-directed mutagenesis designer"
method: POST
path: "/site_directed_mutagenesis"
tags: ["Primers & oligos"]
---

# Site-directed mutagenesis designer

`POST /site_directed_mutagenesis`

## Request

- Base URL: `https://seqbench.com/api/v1`
- URL: `https://seqbench.com/api/v1/site_directed_mutagenesis`
- Auth: none required

Design site-directed mutagenesis primers (QuikChange overlapping or Q5 back-to-back) for a base substitution, an amino-acid codon swap, or an insertion/deletion/delins. The edit can be given as fields or, more simply, by NAME in `mutation`: "E52K", "p.Glu52Lys", "c.155A>G", "c.76_78del", "c.76_77insGGA", "c.76_78dup". A named mutation is checked against the template — if the reference allele it states is not what is actually at that position, the call is refused and the real base or residue is quoted back, because a coordinate belonging to a different transcript or the other strand yields perfectly well-formed primers for the wrong base. `interpretedAs` in the response says which reading was designed.

## Request body

- object
  - `template` string, required: Nucleotide sequence (raw or FASTA; IUPAC accepted).
  - `mutation` string: The edit by name — "E52K", "p.Glu52Lys", "Q100*", "c.155A>G", "A155G", "c.76_78del", "c.76_77insGGA", "c.76_78dup", "c.76delinsAA". Replaces the field-by-field forms below. An unprefixed "A123G" is a legal reading at BOTH levels; it is resolved by which one matches the template, and refused if both do.
  - `editKind` 'nt' | 'aa' | 'delins': Edit level. Normally omitted — it is inferred from the fields you send (newBase means nt, targetAa means aa, insert/deleteLength means delins).
  - `style` 'quikchange' | 'q5': Mutagenic primer style.
  - `armTmTarget` number: Target Tm (°C) for each template-binding arm.
  - `position` integer: 1-based position to substitute (nt), or the first base of the span to replace (delins). Required for those forms — it is never assumed. For a pure insertion (deleteLength 0) it is the base the insert goes in FRONT of.
  - `newBase` 'A' | 'C' | 'G' | 'T': Replacement base (nt edit).
  - `deleteLength` integer: Template bases to remove, starting at `position` (delins edit). 0 with `insert` set is a pure insertion, placed immediately before `position`.
  - `insert` string: Bases to put in place of the deleted span (delins edit). Omit for a pure deletion. NOTE the convention when deleteLength is 0: the insert lands immediately BEFORE `position`, so position 101 + insert "GGA" is the same edit as mutation: "c.100_101insGGA" — HGVS names the two flanking bases, this names the base the insert sits in front of. `interpretedAs` states which bases the insert ended up between.
  - `frameStart` integer: 1-based position of the first base of codon 1. Needed whenever the coding sequence does not start at base 1 of the template — a residue number means nothing without it.
  - `residue` integer: 1-based residue number to change (aa edit).
  - `targetAa` string: Target amino acid, one-letter code incl '*' (aa edit).
  - `organism` 'ecoli' | 'human' | 'yeast' | 'cho' | 'pichia' | 'insect' | 'arabidopsis' | 'zebrafish': Codon-usage table for choosing the new codon (aa edit). Latin names and common strain/cell-line names are accepted.
  - `oligoNM` number: Total strand concentration (nM).
  - `naMM` number: Monovalent cation [Na+]/[K+] (mM).
  - `mgMM` number: Divalent cation [Mg2+] (mM).
  - `dntpMM` number: Total [dNTP] (mM), chelates Mg2+.

## Response `200`

Tool ran successfully.

- SuccessResponse: Standard success envelope returned by every single-tool call.
  - `ok` unknown, required
  - `tool` string, required: The tool slug that ran.
  - `result` object, required: Tool-specific output object. Its shape depends on the tool — call `GET /{tool}` or see the docs for each tool's fields.
  - `gate` GateResult
    - `pass` boolean, required: True if and only if every hard check passed.
    - `checks` GateCheck[], required
      - `id` string, required
      - `label` string, required
      - `severity` 'hard' | 'soft', required
      - `pass` boolean, required
      - `message` string, required
      - `value` number
      - `threshold` string
    - `notChecked` string[], required: Honest list of what this gate does NOT verify.
  - `provenance` Provenance, required
    - `apiVersion` string, required
    - `tool` union, required: Tool slug, or an array of slugs (one per step) for a workflow.
      - string
      - string[]
    - `generatedAt` string, date-time, required: ISO 8601 timestamp of when the result was generated.

## Other responses

- `400`: Invalid argument or the tool could not run.
- `404`: Unknown tool.
- `429`: Rate limited (metered tools only). Body carries code `rate_limited` and retryable `true`; honor the Retry-After header.
- `503`: A metered tool is momentarily at capacity. The identical request should succeed after Retry-After; body carries code `upstream_unavailable`.

---

[API](https://skmtc.dev/seqbench/apis/seqbench-api.md) · [All operations](https://skmtc.dev/seqbench/apis/seqbench-api/llms.txt) · [OpenAPI document](https://skmtc.dev/seqbench/apis/seqbench-api/revisions/132575216865?raw)
