---
title: "How to build it, and what each way costs"
method: POST
path: "/build_route_plan"
tags: ["Enzymes & cloning"]
---

# How to build it, and what each way costs

`POST /build_route_plan`

## Request

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

Compare the ways one construct can actually be made — order it whole as a sequence-verified clonal gene, buy only the pieces you cannot amplify, PCR everything out of plasmids you already have, edit one plasmid by mutagenesis, or anneal oligos for a short piece — each costed off a published US list price with the page and the date it was read. It first works out which stretches of the target occur in the templates you give it (either strand, through a circular origin), since the stretch you already hold is the one you do not have to buy. Costs cover ORDERED items only: synthesis, oligos and sequencing. Enzymes, master mixes and competent cells are not costed, because no vendor publishes a price for them without an account and they are much the same whichever route you take. Nothing here predicts whether a reaction will work; each route states its own failure mode instead.

## Request body

- object
  - `target` string, required: The construct you want, as bases, FASTA or a GenBank record.
  - `templates` string: What you already have in the freezer: a multi-record FASTA (headers become the names), a single GenBank record, or bare bases. Omitted, the only route is to buy the whole thing.
  - `circular` boolean: Is the finished construct a plasmid? Reported back, not used to price.

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