---
title: "Repeat instability (what the construct can delete)"
method: POST
path: "/repeat_instability"
tags: ["Enzymes & cloning"]
---

# Repeat instability (what the construct can delete)

`POST /repeat_instability`

## Request

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

Find the exact direct repeats in a construct that make it deletable, and build the molecule each pair would collapse to. Two copies of the same terminator or promoter in a multi-gene assembly let the DNA between them recombine out — silently, so the clone grows and the map looks right until it is sequenced. Returns each repeat pair's coordinates plus the resulting sequence(s), ordered by repeat length and spacer, the two factors that govern how readily a pair recombines. Reports no deletion RATE: none is derivable from sequence alone. Feed a deletion product to diagnostic_digest to screen for it.

Batchable via `POST /batch`.

## Request body

- object
  - `sequence` string, required: The construct, raw or FASTA. Max 500,000 bp.
  - `circular` boolean: Treat as a plasmid. A circular construct is searched across its own arbitrary start, so a repeat straddling position 1 is not missed, and each pair reports BOTH circles the recombination makes.
  - `minRepeatLength` integer: Shortest repeat to report, in bp (default 20). Below about 20 bp homologous recombination has little to work with and chance matches multiply.
  - `maxPairs` integer: Cap on reported pairs, most recombinogenic first. The pre-cap count is always reported as pairsFound.
  - `includeSequences` boolean: Return the full product sequences. Turn off for a coordinates-only summary over a large construct.

## 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)
