Skip to content
Ancestrify

For companies and labs · Updated 19 October 2026

qpAdm via API for DNA-testing companies and labs

Send a customer's DNA file with one API call and receive every qpAdm model that passed, as JSON: the p-value, each source's share, standard error and Z-score, computed on the same merge and the same engine behind every Ancestrify report. Create a company account, make a key and build on the free sandbox today. A delivered sample costs 15 EUR.

Create a company accountHow the method works
Analysis workspace

Job job_01j8k · model record

status
succeeded · 202 then 200
Anatolia_N
0.52 · SE 0.031 · Z 16.8
WHG
0.11 · SE 0.028 · Z 3.9
Yamnaya_Samara
0.37 · SE 0.034 · Z 10.9
p
0.21 · not rejected
HTTP 200 · p = 0.21 · bar passed · illustrative

What the API is

Ancestrify runs qpadm() from ADMIXTOOLS 2 on its own infrastructure. A genotype file is merged into the Allen Ancient DNA Resource v66 with Poseidon's trident, the model is run against a fixed set of right populations, and the full record is published. The API is programmatic access to that same merge and engine, for organisations that handle many samples rather than one.

It is deliberately narrow. You send a raw DNA export or a whole-genome VCF with a little metadata: a reference of your own and, if known, the person's declared origins. Our analyst searches and audits the models, a person approves the result, and you receive every model that passed for each era, up to four, with the one we would pick flagged. Every number is the tool's own output; nothing is smoothed or rounded for presentation.

Two things it is not. It is not instant: a merge into the reference panel is heavy work and every result waits for a person, so a sample takes working days, not seconds, and your integration polls or receives a webhook. And it is not a percentage calculator: only models that clear the bar are delivered, and a sample with no model that clears it is declined and costs nothing.

The real paths

One exchange, three calls

Exchangeillustrative, not a contract

POST/v1/partner/qpadm/orders
ReadySubmit
Authorization: Bearer anc_your_api_keyfile=@sample-0001.txtmetadata={  "externalId": "cust-0001",  "ancestry": [{    "ethnicity": "Albanian",    "regions": ["Gheg"]  }],  "consent": {    "geneticDataProcessing": true,    "authorityToSubmit": true  }}HTTP 201 Created{ "id": "job_01j8k",  "status": "received" }
GET/v1/partner/qpadm/orders/job_01j8k
ReadyOrder
HTTP 200 OK{  "id": "job_01j8k",  "externalId": "cust-0001",  "environment": "live",  "status": "completed",  "resultAvailable": true}received, merging, analysing,in_review, completed
GET/v1/partner/qpadm/orders/job_01j8k/result
ReadyResult
HTTP 200 OK{ "eras": [{ "era": "Bronze Age", "models": [{  "ordinal": 1, "recommended": true, "pValue": 0.21,  "chiSquare": 7.19, "degreesOfFreedom": 5,  "sources": [    { "population": "Anatolia_N", "label": "Turkey_Barcin_N", "sampleCount": 20,      "percentage": 52, "standardError": 0.031, "zScore": 16.8 },    { "population": "WHG", "label": "Luxembourg_Loschbour.DG", "sampleCount": 1,      "percentage": 11, "standardError": 0.028, "zScore": 3.9 },    { "population": "Yamnaya_Samara", "label": "Russia_Samara_EBA_Yamnaya", "sampleCount": 9,      "percentage": 37, "standardError": 0.034, "zScore": 10.9 }  ]}] }] }

A whole integration: submit, poll or receive a webhook, read the models. The numbers are illustrative; the paths and field names are the real ones.

What you can build on it

  • Self-serve from day one

    Create a company account, make up to five keys and buy credits by card, 1 to 50 at a time. 15 EUR per delivered sample, whole-genome files included.

  • Every model that passed

    For each era, up to four distinct models, each audited: p-value, chi-square, degrees of freedom, SNP count, the right populations, and every source's share, standard error and Z-score, as JSON.

  • A free sandbox, the same key

    One key works on both environments. The sandbox checks your file and metadata exactly as production does, answers within a minute with a sample result, and never spends a credit.

  • Reviewed by a person

    Every result is approved by our analyst before you can read it, the same check every Ancestrify report passes. You are charged only for results that are released.

  • Webhooks or polling

    A merge is a heavy job, so samples are asynchronous. Poll the order, or register a signed webhook and let us call you when it completes.

  • Your data, in the EU

    Samples are pseudonymous, and the DNA is stored and analysed on our own servers in Germany and Finland under GDPR. Delete a sample by API at any time; the raw DNA is erased 30 days after delivery.

How a sample moves through the pipeline

  1. Receive

    Sample accepted

    Formats23andMe · AncestryDNA · MyHeritage · FTDNA · VCF

    A raw microarray export or a whole-genome VCF, validated by its content rather than by vendor.

  2. Merge

    Merged into AADR v66

    PanelHO · ~2M SNPs

    Converted, filtered of indels and strand-ambiguous SNPs, and intersected against the panel with Poseidon's trident.

  3. Model

    qpadm() runs

    EngineADMIXTOOLS 2 · f4 statistics · block jackknife

    Run in R on our own infrastructure. Candidate models are searched and audited, guided by any origins you declared.

  4. Judge

    Held to one bar

    Barp > 0.05 · every |Z| > 3 · every SE < 0.10

    The bar every Ancestrify report passes. A model that fails is never delivered, and never softened into one that passes.

  5. Deliver

    Models returned

    DeliveryJSON · webhook or poll · reviewed by a person

    Approved by our analyst, then released to your next poll or announced to your webhook. The credit is charged at this moment, not before.

The numbers behind every model

Engine
qpadm() from ADMIXTOOLS 2, run in R on our own infrastructure.
Reference panel
~23,265 samplesAllen Ancient DNA Resource v66, the same merge every Ancestrify report is built on.
Population labels
~6,015 labelsDistinct labels to draw sources and outgroups from.
Publish bar
p > 0.05 · every |Z| > 3 · every SE < 0.10. The same bar at every tier of the consumer product.
Record fields
p-value, chi-square, degrees of freedom, rank, per-source weight, SE and Z, nested-model and rank tests, merged SNP count, jackknife blocks, warnings.
Catalog
199 countriesEvery sovereign state: 1,119 regions across the countries below.
Source populations
68 sourcesCurated across two eras, each with a public page.
Automated runs today
1,600 models a batchThe Ancestry Workbench already runs customer-composed models automatically, one at a time or as rotation batches, on the same engine.
Data location
Our own servers in Germany and Finland, under GDPR.
Endpoint sketch

What you integrate

  1. POST
    /v1/partner/qpadm/orders

    Submit a DNA file and its metadata. Your own externalId is the idempotency key, so a retry never creates a second sample.

  2. GET
    /v1/partner/qpadm/orders/{id}

    Poll the sample: received, merging, analysing, in_review, then completed, declined or failed. Or receive a signed webhook.

  3. GET
    /v1/partner/qpadm/orders/{id}/result

    Read every model that passed, per era, with the recommended one flagged.

These are the real paths. The full reference, with uploads for large files, webhooks, errors and code samples, is in the Developers area of every company account.

Data and compliance

HostingGermany and FinlandLawGDPRAgreementDPA per company

DNA files are stored and analysed on our own servers in the European Union, in Germany and Finland, under GDPR. A whole-genome VCF is converted to the panel's markers at upload and the original is not stored. Files are never matched against other customers' files, and there is no cross-customer database of any kind.

For an organisation this means a data processing agreement, deletion by API at any time, and raw DNA erased 30 days after a result is delivered. Samples reach us under your own reference, never a name. Our subprocessor list names every provider by category and location, including the few outside the European Economic Area, and none of those ever receives a DNA file. The operator is a registered sole trader in Albania; the legal notice and the privacy notice apply to API traffic as they do to the site.

The privacy notice and the legal notice name the controller and the hosting. The source populations are listed under Ancestry, and the method behind every model is on the qpAdm page.

Who it is for

  • Consumer DNA-testing companies

    Add a formal ancient-ancestry model to a product that ships a percentage estimate today, with numbers a customer can check.

  • Genetic-genealogy services and labs

    Run qpAdm on many kits without operating a merge pipeline, an AADR mirror and an R environment yourselves.

  • Research groups and consultancies

    Batch a cohort through one consistent merge and one consistent bar, and keep every record.

Questions

  • Is this the same qpAdm as the consumer reports?

    Yes. The same qpadm() from ADMIXTOOLS 2, the same AADR v66 merge, the same right sets and the same publish bar. The API changes how samples arrive and how results leave, not what is computed.

  • Can I sign up and get an API key today?

    Yes. Create a company account, confirm your email and make a key in the Developers area. The same key works on the free sandbox and in production, and the documentation there takes you from a key to a result in four calls.

  • What does a result contain?

    For each era, every model that passed, up to four: the p-value, chi-square and degrees of freedom, the SNP count, the right populations with the individuals behind each, and for every source its share with its standard error and Z-score, the panel label it was modelled as and the individuals behind it. One model per era is flagged as the one our analyst would pick.

  • Is every model checked by a person?

    Yes. Our analyst searches and audits the models, and a person approves every result before it is released to you, exactly as for a report on the site. That is also why a sample takes working days rather than seconds.

  • What does it cost?

    15 EUR per delivered sample, whole-genome files included. You buy credits by card, 1 to 50 at a time; a credit is reserved when you submit and charged only when the result is released, so a declined or failed sample costs nothing. One credit buys one delivered sample of either product, qpAdm or Ancient Matches. The sandbox is free. For larger volumes, write to info@ancestrify.io.

  • Where is the data processed and how long is it kept?

    The DNA is stored and analysed on our own servers in Germany and Finland under GDPR, and no provider outside the European Economic Area ever receives it. You can delete a sample by API at any time, the raw DNA is erased 30 days after delivery, and nothing is matched against other customers' files.

See the engine first

The AdmixTools 2 Lab runs real f-statistics, qpWave and qpAdm over the public reference panel in the browser, free, and the Ancestry Workbench is the automated self-serve half of the same engine on a customer's own merged dataset. The model record explained reads every field the API returns, and the merge guide describes the data preparation step by step.

The same key and the same credits also buy Ancient Matches: Ancient Matches via API returns the ancient individuals a sample shares DNA with, as data, from the same kind of file.

Self-serve from the first sample

Create a company account and send your first sample today.

Sign up as a company, create a key and test against the free sandbox. There is nothing to request and nobody to wait for. For volume pricing, invoicing or a data processing agreement, write to info@ancestrify.io.

Ancestrify

Combining cutting-edge genomic science with rich historical records to map your ancestry across generations and continents.


© 2026 Ancestrify. All rights reserved. · Ancestrify is a trading name of Andi Thomaj, a sole trader registered in Tiranë, Albania · NUIS M61725001N
Card payments processed by POK Payments (RPay Ltd)VISAMASTERCARD