---
title: "Check an oligo order against its map"
method: POST
path: "/oligo_order_check"
tags: ["Primers & oligos"]
---

# Check an oligo order against its map

`POST /oligo_order_check`

## Request

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

Check a list of oligos against the plasmid or template they were designed from, before ordering them. For each oligo: where it primes (3'-anchored, so cloning tails are allowed), on which strand, and which bases disagree with the map. When an oligo primes nowhere it says WHICH copying mistake explains it — reversed without being complemented, complemented without being reversed, one base dropped or doubled, a wrong last base — and gives the sequence that was meant, but only when exactly one such mistake reproduces an oligo that binds. It simulates every product the order can make (up to 15,000 bp) with the in_silico_pcr engine, and for pairs the names declare (GFP_F / GFP_R) says why they make none, including which of the two is written as the wrong strand. Also flags one sequence under two names, one name on two sequences, a primer saved in the map under the same name that sits elsewhere, and 3' self-dimers/hairpins. Up to 96 oligos.

## Request body

- object
  - `template` string, required: The map the oligos were designed from — a GenBank record (its LOCUS line gives the topology and its features name where each oligo sits), FASTA, or bare sequence.
  - `oligos` string, required: The order sheet: FASTA (headers become names), or one oligo per line as `name<TAB or comma or space>sequence`, or bare sequences one per line (named oligo_1, oligo_2, …).
  - `circular` boolean: Override the topology. Omitted: a GenBank/EMBL record's own header decides, and bare sequence is treated as a circular plasmid (stated in the response as topologySource).

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