Find genes and their exon/intron/CDS structure
Structure-aware gene finding: genes with transcript type and exon/intron/CDS structure, each with its own strand, renderable as GFF3 or BED.
Minimum input is 1000 bp — the gene finder needs that much context to be meaningful. This is the bound the document used to advertise as 1 bp.
Detection is strand-insensitive: the same genes are found whether the plus strand or its reverse complement is submitted, and the reported strand is relative to the input. options.reverse_complement (default true) averages each locus with its reverse complement, which improves minus-strand recall at roughly double the cost.
Above 200,000 bp this endpoint requires Prefer: respond-async. A synchronous JSON request over that size is rejected with 413 sync_too_large (error.details carries {sequence_length, threshold}) because sync delivery would outlast the proxy timeout: a 500,000 bp annotation takes about 250 s against a 300 s idle timeout. The threshold is published as a number in x-sync-limit-bp on this operation — read it from there; this sentence is prose and a client cannot pin it.
The cap governs JSON delivery. Async is JSON-only, so a BED or GFF3 request (?format= or Accept: text/x-bed / text/x-gff3) is not refused above the threshold: it is served synchronously at any admitted length. Near the 500,000 bp ceiling that is roughly 250 s of work and can exceed a gateway's 300 s idle timeout, so for long sequence prefer JSON with Prefer: respond-async and render the completed job yourself.
Request
- Base URL: https://api.genomicintelligence.ai
- URL: https://api.genomicintelligence.ai/v1/tasks/annotation/predict
- Auth: HTTP bearer
Query parameters
Output format: json (default) or one of bed, gff3. Text formats are synchronous-only — combining one with Prefer: respond-async is a 400. An unsupported value is a 415 unsupported_format, never a silent fallback to JSON.
Headers
Set to respond-async to dispatch asynchronously: the server returns 202 with {data: {job_id, status, links}, meta} immediately and the result is polled from GET /v1/tasks/jobs/{job_id}. Anything else (or omitting the header) delivers the result synchronously with 200. Async is JSON-only — combining it with a text format is a 400. Some endpoints require it above a size threshold and reject sync delivery with 413 sync_too_large.
Request body
Example request
{
"options": {
"threshold": 0.5
},
"sequence": "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT",
"sequence_name": "chr1:1000-3000"
}Response
Successful inference. data is a discriminated union keyed on task — narrow on data.task (or meta.task) to reach task-specific fields; here it is always "annotation". meta.task_specific_counts is the matching counts variant.
Changes
No recorded changes to this operation across all 1 revision of this API.