# Tasks

Six tasks, each a single endpoint: `POST /v1/tasks/{task}/predict` (and the same six tools over [MCP](mcp.md)). Each accepts a DNA `sequence` (and a `sequence_name` label) and returns task-specific fields under `data`; `meta` is uniform across tasks. Request and response schemas — with copyable examples — are in [ReDoc](https://api.genomicintelligence.ai/redoc); per-task length caps and latency are in [Limits](reference/limits.md).

| Task | Input (bp) | Strand-sensitive | Output | Default model |
|---|---|---|---|---|
| [Promoter](#promoter) | 1–500,000 | Yes (coding strand) | Promoter-region probabilities | `g0-promoter-2000bp` |
| [Splice](#splice) | 1–500,000 | No | Donor / acceptor sites | `g0-splice-bigbird` |
| [Enhancer](#enhancer) | 50–500,000 | Yes (dev/hk channels) | `dev` + `hk` activity scores | `g0-deepstarr` |
| [Chromatin](#chromatin) | 1–500,000 | No | 919 features in 8 track groups | `g0-deepsea` |
| [Expression](#expression) | 9,198 (TSS-centered) | Yes (coding strand) | Expression in log(TPM+1) | `g0-expression` |
| [Annotation](#annotation) | 1–500,000 | Plus-strand input | Transcript intervals; +exon/intron/CDS GFF3 via `g1-annotation` (async) | `g0-annotation`, `g1-annotation` |

Where a task is marked strand-sensitive, submit DNA 5'→3' on the gene's coding (sense) strand; for annotation, submit the plus-strand region.

## Model selection

Each task has a `default_model` and may offer alternatives. List them with `GET /v1/tasks/{task}/models` (a flat object, not the `{data, meta}` envelope); pass a model's `name` in `options.model` to pick one. Beyond the default human models, `promoter` offers species-specific variants (Drosophila, yeast, Arabidopsis), and DNABERT k-mer variants exist for `promoter`, `enhancer`, and `chromatin`. The model-list endpoint is authoritative for what each task currently serves.

## Promoter

Binary classification that detects promoter regions. The default `g0-promoter-2000bp` is a G0 BERT-Large encoder trained on human promoters from EPDnew. Inputs above 2,000 bp are scanned in windows automatically.

- `options.threshold` (0–1, default 0.5): probability cutoff for calling a window a promoter.
- Strand-sensitive — submit the coding (sense) strand.

Output: per-window promoter probabilities. Also `BED` and `bedGraph` (see [output formats](getting-started.md#output-formats)).
MCP: *"Fetch a 100 kb window around human TP53 and scan it for promoter regions."*

## Splice

Token-level classification labelling each position as a splice acceptor (3' site), donor (5' site), or neither. The default `g0-splice-bigbird` is a G0 BigBird encoder trained on human splice sites from SpliceAI. Long inputs are scanned in a 15,000 bp sliding window; predictions are most reliable in the central region of each window.

- `options.threshold` (0–1, default 0.5): score cutoff for emitting a site.
- `options.site_types`: subset of `["donor", "acceptor"]` (default both).

Output: detected acceptor and donor sites with scores. Also `BED` and `GFF3` (see [output formats](getting-started.md#output-formats)).
MCP: *"Fetch the human HBB gene sequence and predict its splice sites."*

## Enhancer

Regression predicting two scores per window: developmental (`dev`) and housekeeping (`hk`). The default `g0-deepstarr` is a G0 BERT-Base encoder trained on Drosophila enhancers from DeepSTARR. The sequence is split into consecutive, non-overlapping 249 bp windows, each scored independently.

The model is Drosophila-trained and strand-sensitive for the dev/hk channels — use a fly sequence on the gene's coding (sense) strand.

Output: per-window `dev` and `hk` scores, embedding bedGraph renderings of each track. `bedGraph` is also available directly (see [output formats](getting-started.md#output-formats)).
MCP: *"Fetch the Drosophila ftz gene and predict enhancer activity."*

## Chromatin

Multi-label classification predicting 919 mammalian chromatin features (DeepSEA-style), grouped into eight categories (DNase, CTCF, Pol2, c-Myc, H3K27ac, H3K27me3, H3K4me1, Other). The default `g0-deepsea` is a G0 BERT-Base encoder trained on ENCODE data. The sequence is tiled into 1,000 bp windows stepping every 200 bp.

- `options.threshold` (0–1, default 0.5): only features scoring above this are returned.

Output: per-feature probabilities (above the threshold), grouped by category. Also `BED` (see [output formats](getting-started.md#output-formats)).
MCP: *"Fetch the human HBB promoter region and predict its chromatin features."*

## Expression

Predicts gene expression from a DNA sequence plus an experimental-context description, on a log(TPM+1) scale. The default `g0-expression` is trained on ENCODE RNA-seq across cell types.

- **`sequence`**: DNA centered on the transcription start site. The model was trained on a 9,198 bp window (4,599 bp each side of the TSS); supply that for in-distribution results. 500–500,000 bp is accepted but truncated to the first ~1,024 tokens. **Pre-center on the TSS** on the gene's coding (sense) strand.
- **`options.description`** (required): free-text experimental context (cell type, assay, conditions). Omitting it returns `422 validation_failed`.

Output: `data.prediction` = `{expression, expression_log_tpm, expression_tpm, unit}` — `expression`/`expression_log_tpm` are log(TPM+1); `expression_tpm` is the back-transformed linear value. JSON only (no text-track formats).
MCP: *"Predict HBB expression in K562 cells."*

## Annotation

Gene finding over long DNA: detects transcripts and returns their intervals. Two models are available. The default `g0-annotation` (human-trained) returns transcript **boundaries** only. `g1-annotation` (multispecies) additionally predicts transcript **type** (mRNA / lnc_RNA) and full internal **exon/intron/CDS structure**, and emits a browser-ready `GFF3` track. Submit the **plus-strand** genomic region; the model finds transcripts on both strands. This is the longest-running task — run it **asynchronously** (see [Asynchronous jobs](getting-started.md#asynchronous-jobs)).

- `model`: `g0-annotation` (default, boundary-only) or `g1-annotation` (structure + GFF3).
- `options.batch_size` (1–128): windows processed per batch.
- `options.shift_coordinates: "UCSC"`: rebase output coordinates from a UCSC-style `sequence_name` (e.g. `chr8:127,680,000-127,800,000`).

Output: transcript intervals, each carrying its own strand (`+`/`-`) plus `tss_position` and `polya_position`. Also `BED`. With `g1-annotation`, each transcript additionally carries `transcript_type`, `transcript_type_score`, and 0-based half-open `exons`/`introns`/`cds` arrays, and `data.formats.gff3` holds a full `GFF3` track (also via `Accept: text/x-gff3`). See [output formats](getting-started.md#output-formats).
MCP: *"Find the genes in chr8:127,680,000-127,800,000."*

---

Next: [Limits](reference/limits.md) for caps and latency, or the [REST API guide](getting-started.md) for the call walkthrough.
