---
title: "Oligo cofold (ΔG)"
method: POST
path: "/oligo_cofold"
tags: ["Primers & oligos"]
---

# Oligo cofold (ΔG)

`POST /oligo_cofold`

## Request

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

Minimum-free-energy structure and ΔG for one oligo (hairpin) or two oligos together (homo/heterodimer), using ViennaRNA's published loop model at a temperature you choose — DNA parameters (Mathews 2004) by default, RNA (Turner 2004) on request. Reports each strand alone, the duplex, and the interaction ΔG the two gain by pairing with each other rather than folding alone, which is the number a primer-dimer screen wants. Unlike oligo_analysis's fast stack-sum screen this is a full loop model with bulge, internal-loop and dangling-end terms; the two are on different parameter sets and must not be compared.

## Request body

- object
  - `a` string, required: First oligo, 5'→3'. Max 200 nt.
  - `b` string: Second oligo. Omit to analyze hairpin structure in 'a' alone; pass the same sequence as 'a' for a homodimer.
  - `alphabet` 'dna' | 'rna': Which measured parameter set to use. This is not cosmetic — the same 20-mer can differ by several kcal/mol between them.
  - `temperature` number: °C. Primer dimers matter at the annealing temperature, not at 37 °C.
  - `partition` boolean: Also compute the ensemble free energy over all structures, not just the MFE one. Costs a second pass.

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