Skip to main content
Give a user their genetic ancestry story: super-population proportions, maternal and paternal haplogroups, a geographic map, and a per-chromosome breakdown, starting from a 23andMe, AncestryDNA, or WGS VCF file.
StepEndpoint
Upload the genomePOST /imports/file (genetics)
Run ancestryPOST /genetics/ancestry

1. Upload the genome file

GENE=$(curl -s -X POST "$FB_API/imports/file" -H "authorization: Bearer $FB_KEY" \
  -H "content-type: application/json" -d '{
    "user_id":"'$UID'","organization_id":"'$ORG'","category":"genetics",
    "filename":"genome.txt","content_type":"text/plain",
    "text":"# rsid\tchromosome\tposition\tgenotype\nrs4477212\t1\t82154\tAA\n…"
  }' | jq -r .source.id)
Large WGS VCFs are supported too; the file’s raw payload is stored and referenced by the source.

2. Run the ancestry analysis

curl -s -X POST "$FB_API/genetics/ancestry" -H "authorization: Bearer $FB_KEY" \
  -H "content-type: application/json" -d '{
    "user_id":"'$UID'","organization_id":"'$ORG'","source_id":"'$GENE'",
    "resolution":"continental"
  }' | jq .
You get a maximum-likelihood estimate over 1000 Genomes reference populations:
{
  "status": "complete",
  "reference_panel": "1000_genomes_phase3",
  "summary": "Predominantly European with…",
  "ancestry": [{"population":"EUR","label":"European","proportion":0.72}, ],
  "haplogroups": { "maternal": "H1", "paternal": "R1b" },
  "geographic_map": [  ],
  "chromosome_breakdown": [ {"chromosome":"chr1","proportions":{  }},  ],
  "quality": { "matched_markers": 61, "matched_proportion": 88.4, "compatible_for_projection": true },
  "methodology": { "algorithm": "Maximum-likelihood population allele-frequency comparison…", "limitations": [  ] }
}

Reading the result

  • status is complete, low_confidence, or setup_required. SNP-array files match many markers; sparse or unmatched files return setup_required with guidance in quality.notes.
  • resolution can be continental or regional.
  • Always show methodology.limitations: genetic ancestry is not identity, ethnicity, or nationality.

Take it further

  • Combine with the rest of the genome: POST /genetics/analyze runs the bundled ClinVar / CPIC / PRS / aging-hallmarks pipeline (queued for large WGS; poll GET /genetics/jobs/{id}).
  • Fold ancestry context into a multimodal POST /analyses alongside biomarkers and wearables.