canonical: https://jentic.com/apis/genome.ucsc.edu/ucsc-genome

# Genome Ucsc Edu UCSC Genome Browser REST API

Jentic publishes the only available OpenAPI specification for UCSC Genome Browser REST API, keeping it validated and agent-ready. The UCSC Genome Browser REST API exposes the institute's reference genome database to programmatic clients, covering genome assemblies, public hubs, GenArk genomes, annotation tracks, chromosome lists, sequence retrieval, and a free-text search across track schemas. It is widely used by bioinformatics pipelines that need authoritative coordinates and sequence data without scraping the browser UI. The endpoints are read-only and do not require authentication.

## For AI agents

Query UCSC Genome Browser data - assemblies, tracks, sequences, and chromosome metadata - directly from a bioinformatics pipeline or research agent.

## Scope

Does not handle variant calling, sequence alignment, or write operations on genome data - use for read-only retrieval of UCSC assemblies, tracks, and sequences only.

## Capabilities

- Find genomes by name or accession across UCSC, GenArk, and public hub collections
- List the annotation tracks available for a specific assembly with their schemas
- Retrieve chromosome lists and lengths for a target genome
- Pull DNA sequence for a specified region from an assembly
- Fetch track data over a region for downstream variant or feature analysis
- Search across track schemas to discover datasets that match a research question

## Use cases

### Variant Annotation Pipeline

Bioinformatics pipelines annotating sequencing variants need fast access to reference sequence and gene-prediction tracks. The `/getData/sequence` and `/getData/track` endpoints return the surrounding sequence context and feature overlaps for each variant call, letting the pipeline classify a variant as coding, regulatory, or intergenic without standing up a local UCSC mirror.

Example prompt: For each variant in a VCF, call `/getData/sequence` around the position and `/getData/track` for the gene-prediction track to record the feature overlap

### Genome Browser Embedding

Research portals and lab websites embed lightweight genome views without hosting a full UCSC mirror. The `/list/tracks` and `/list/chromosomes` endpoints provide the structural metadata to render a track selector, and `/getData/track` returns the visible region's data on demand for client-side rendering.

Example prompt: List tracks for hg38 via `/list/tracks`, render the track selector, then call `/getData/track` for the user's selected region

### Comparative Genomics Lookup

Researchers comparing assemblies across species need quick access to chromosome counts, lengths, and available tracks. `/list/ucscGenomes` and `/list/genarkGenomes` enumerate the full catalogue, `/list/chromosomes` returns assembly structure, and /findGenome resolves species names to assembly IDs - useful for building comparative-genomics dashboards over many organisms.

Example prompt: Resolve species 'Mus musculus' via /findGenome, list its chromosomes via `/list/chromosomes`, and add the assembly to the comparative dashboard

### AI Agent Bioinformatics Assistant

An AI agent answering genomics questions can ground its replies in UCSC's authoritative data. Through Jentic the agent searches for 'get DNA sequence', loads the schema for `/getData/sequence`, and executes the call. Because the API is open, no credentials are needed - Jentic still routes the request and validates the schema.

Example prompt: Search Jentic for 'get DNA sequence from UCSC', execute `/getData/sequence` for chr1 100000-100100 in hg38, and return the sequence to the chat thread

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/findGenome` | Find a genome by name or accession |
| GET | `/list/ucscGenomes` | List UCSC-hosted genome assemblies |
| GET | `/list/tracks` | List annotation tracks for an assembly |
| GET | `/list/chromosomes` | List chromosomes and lengths for an assembly |
| GET | `/getData/sequence` | Retrieve DNA sequence for a region |
| GET | `/getData/track` | Retrieve track data for a region |
| GET | `/search` | Search across track schemas |

## Key resources

- **Genome Discovery** — Find genomes and list UCSC, GenArk, and public hub catalogues
- **Tracks** — List and inspect annotation track schemas for a given assembly
- **Chromosomes** — List chromosomes and their lengths for an assembly
- **Data Retrieval** — Fetch sequence and track data for a specified genomic region
- **Search** — Free-text search across track schemas

## Why Jentic

- **Setup:** Wiring the UCSC Genome Browser REST API by hand means learning its parameter conventions for assemblies, tracks, and sequence ranges and routing each read to the right path yourself. Through Jentic you install once, import UCSC Genome Browser from the API Directory, and your agent calls it, with no credential to manage since the API is open.
- **Permission scoping:** The UCSC Genome Browser API is read-only and takes its parameters in the query string rather than the URL path, so scope the agent to the operations it needs, such as fetching a sequence or listing tracks. You choose the operations it may call, so nothing beyond the reads you allow runs.
- **Credential handling:** The UCSC Genome Browser API requires no credentials, so no secret is stored; Jentic still routes each call through your own Jentic One instance for validation and consistent execution. No credential ever enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'get a DNA sequence for a region' or 'list genome tracks', and Jentic returns the matching UCSC operation with its parameter schema for chrom, start, end, and genome, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **EMBL-EBI** — European Bioinformatics Institute APIs covering Ensembl, sequence, and proteomics data
- **NCBI Datasets** — NCBI Datasets API for genome assemblies, gene records, and annotations
- **OpenAI** — Summarise UCSC track data into plain-language explanations for non-specialist users

## FAQ

### Why is there no official OpenAPI spec for UCSC Genome Browser REST API?

UCSC documents the REST API on its help pages but does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call UCSC Genome Browser REST API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the UCSC Genome Browser API use?

The API is open and requires no authentication. Requests go directly to api.genome.ucsc.edu without an API key, token, or signed header. UCSC asks consumers to be considerate with request volume - heavy programmatic users should consider mirroring track data locally.

### Can I retrieve raw DNA sequence with this API?

Yes. GET `/getData/sequence` returns the DNA sequence for a specified region (genome, chromosome, start, end). Combine with `/list/chromosomes` to confirm valid chromosome names and lengths before requesting a slice.

### What are the rate limits for the UCSC Genome Browser API?

The OpenAPI spec does not declare explicit limits. UCSC operates a shared public service - for production-scale workloads, batch your queries, cache results, and consider running a local UCSC mirror or downloading the relevant assembly files directly.

### How do I look up a gene track for a region through Jentic?

Run pip install jentic, search Jentic for 'get UCSC track data', and call `/getData/track` with genome, track name, chrom, start, and end. The response includes the feature records overlapping the region for downstream annotation.

### Is the UCSC Genome Browser REST API free?

Yes. The API is provided free by UCSC as part of the public Genome Browser project. No paid tier exists - usage is governed by community-considerate request patterns rather than a billing relationship.

### Can I limit what my agent is allowed to do with the UCSC Genome Browser API?

Yes. Because you run Jentic One yourself, your own rules decide which UCSC operations the agent may call, and this API is read-only, so nothing beyond the reads you allow ever runs. You can scope the agent to only the endpoints it needs, such as `/getData/sequence` to fetch DNA, `/list/tracks` to list annotation tracks, or `/list/chromosomes`, and leave the rest unavailable. Since the API is open and takes its parameters in the query string, no credential is stored, and Jentic One still routes each allowed call through your instance for validation and consistent execution.
