Foundry120 atlas

Public API endpoints.

Scored datasets are surfaced with an API to facilitate programmatic reuse.

Endpoints

Full technical reference: OpenAPI specification.

01

List pipelines

GET https://atlas.foundry120.com/api/v1/pipelines

The three pipelines: spatial, microbiome, and single-cell IBD.

Parameters

None.

Returns

  • Each pipeline's public slug, title, and short description
  • How many published datasets it currently contains
  • The URL to list those datasets

Example

curl https://atlas.foundry120.com/api/v1/pipelines
Abridged response
[
  {
    "slug": "ibd_spatial",
    "title": "IBD spatial transcriptomics",
    "description": "All published public datasets in this pipeline, …",
    "published_dataset_count": 12,
    "datasets_url": "/api/v1/pipelines/ibd_spatial/datasets"
  },
  …
]
02

List datasets in a pipeline

GET https://atlas.foundry120.com/api/v1/pipelines/{slug}/datasets

Datasets in one pipeline, 25 per page. Unknown slugs return 404.

Parameters

slug path · required

Which pipeline to list.

  • ibd_spatial IBD spatial transcriptomics
  • ibd_single_cell IBD single-cell transcriptomics
  • ibd_microbiome IBD microbiome
q query · optional

Free-text match against title, description, slug, or platform.

disease query · optional

Keep datasets whose cohort includes this disease group.

  • crohns Crohn's disease
  • ulcerative_colitis Ulcerative colitis
  • ibd_unclassified IBD-unclassified
  • controls Non-IBD controls
open_access query · optional

Set to true, 1, or on to keep only openly accessible datasets.

analysis_code query · optional

Set to true, 1, or on to keep only datasets with analysis code available.

page query · optional

1-based page number. Each page returns up to 25 datasets, plus a total count so you can request further pages.

Returns

  • A page of datasets, with a total count for pagination
  • Identity: id, stable slug, title, domain, organism, access, and platform
  • Cohort facts: participants, disease groups, anatomical sites, and age group
  • Availability flags: raw counts, processed matrix, spatial coordinates, histology images, and analysis code
  • Domain-specific facts and when the profile was last resolved

Example

curl https://atlas.foundry120.com/api/v1/pipelines/{slug}/datasets
Abridged response
{
  "count": 12,
  "items": [
    {
      "id": "bb301298-…",
      "stable_slug": "geo-gse277348",
      "title": "Spatiotemporal resolving Crohn's disease fibrosis",
      "domain": "spatial_ibd",
      "organism": "Homo sapiens",
      "access_status": "open",
      "platform": "10x Genomics Visium",
      "total_participants": null,
      "disease_groups": [],
      "anatomical_sites": ["Ileum"],
      "raw_counts_available": false,
      "analysis_code_available": false,
      "last_resolved_at": "2026-08-25T13:45:09.471674+00:00"
    },
    …
  ]
}
03

Dataset detail

GET https://atlas.foundry120.com/api/v1/datasets/{dataset_id}

One published, public dataset: quality, resolved profile, evidence trail, and a file manifest. Unpublished or private rows return 404.

Parameters

dataset_id path · required

The dataset's UUID or its stable slug (for example geo-gse123456).

Returns

  • Everything the pipeline list already provides for that dataset
  • Description, linked publications, and repository accessions
  • Reuse-readiness scores with rationales, plus strengths, limitations, and conflicts
  • Extracted profile fields grouped by topic, each with an evidence excerpt
  • Sample counts, tissue breakdown, a file-manifest summary, and a source URL

Example

curl https://atlas.foundry120.com/api/v1/datasets/{dataset_id}
Abridged response
{
  "id": "bb301298-…",
  "stable_slug": "geo-gse277348",
  "title": "Spatiotemporal resolving Crohn's disease fibrosis",
  "domain": "spatial_ibd",
  "access_status": "open",
  "overall_score": 7.4,
  "quality": [
    {
      "dimension": "cohort_clarity",
      "label": "Cohort clarity",
      "score": 8,
      "maximum_score": 10,
      "rationale": "Participants, disease groups and controls are stated with evidence."
    },
    …
  ],
  "strengths": ["Raw counts and spatial coordinates are deposited."],
  "limitations": ["No analysis code is linked."],
  "profile_fields": {
    "cohort": [
      {"predicate": "total_participants", "value": 12, "confidence": 0.95,
       "excerpt": "12 patients with Crohn's disease were enrolled …"}
    ],
    …
  },
  "evidence": [
    {"predicate": "total_participants", "claim_id": "c-8f2…",
     "source_type": "europepmc", "source_url": "https://europepmc.org/article/…",
     "excerpt": "12 patients with Crohn's disease were enrolled …"}
  ],
  "file_manifest": {"status": "available", "file_count": 1,
    "files_with_download_url": 1, "files_with_size": 0,
    "known_total_size_bytes": 0,
    "files_endpoint": "/api/v1/datasets/bb301298-…/files"},
  "source_url": "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE277348"
}
04

Dataset files

GET https://atlas.foundry120.com/api/v1/datasets/{dataset_id}/files

Advertised files for one published, public dataset, 25 per page. Unpublished or private rows return 404. A download URL is the location the source advertised, not a guarantee the file will fetch.

Parameters

dataset_id path · required

The dataset's UUID or its stable slug (for example geo-gse123456).

page query · optional

1-based page number. Each page returns up to 25 files, plus a total count so you can request further pages.

Returns

  • A page of files, with a total count for pagination
  • Repository and accession the file was advertised under
  • File name, type, description, and exact source-supplied size when known
  • Download URL when the source advertised one; checksum and checksum type when supplied
  • Access status of that repository route, and when the manifest was last checked

Example

curl https://atlas.foundry120.com/api/v1/datasets/{dataset_id}/files
Abridged response
{
  "count": 2,
  "items": [
    {
      "repository": "GEO",
      "accession": "GSE277348",
      "name": "matrix.h5ad",
      "download_url": "https://ftp.ncbi.nlm.nih.gov/geo/…/matrix.h5ad",
      "size_bytes": 710756019,
      "file_type": "H5AD",
      "description": null,
      "checksum": null,
      "checksum_type": null,
      "access_status": "open",
      "last_checked_at": "2026-09-01T12:04:11+00:00"
    },
    …
  ]
}

Rate-limit policy

Limits are counted per client IP. When one is hit, the API returns 429 with a Retry-After header — wait that many seconds and try again. The health endpoint is not rate limited.

Burst
60/min — every endpoint except health
Sustained
2000/day — every endpoint except health
Dataset detail
20/min — dataset detail and file listing, on top of the others

Full OpenAPI specification

Open the technical reference