Developers

One REST API for genomics, labs and recommendations.

Order kits, upload DNA files, generate white-label reports and PDFs, read lab results and recommendations, and get notified by webhook when results are ready.

v3

current REST API

JSON · PDF

data and white-label reports

Webhooks

for every job type

US · EU

production environments

What you can build

Everything in our platform, through the API.

The same endpoints power SelfDecode, our own consumer app.

Profiles & orders

Create customer profiles, order DNA kits with shipping options, and track every kit from order to results.

Genome files

Upload consumer and array files one by one or in bulk, and download raw, imputed and whole-genome data.

Reports

Health, PGx, ancestry, longevity, carrier status, clinical overview, biochemistry, HLA and functional variant reports, plus action plans.

White-label PDFs

Generate branded PDF reports with your logo and configuration set in the request.

Recommendations & diet

Ranked recommendations, optimal diet and personalized meal plans for each profile.

Labs

Add lab results in bulk, read them alongside genetics, generate lab PDFs, or extract results from uploaded files with OCR (beta).

Intake forms & lifestyle

Build your own intake forms and run 150+ lifestyle risk assessments through the API.

Genes & SNPs

Look up genotypes, gene and SNP details, and run custom SNP lists for your own reports.

AI LLM

Embed our genome-aware AI assistant in your app as an iframe, scoped to each of your end users.

Getting started

From contract to production in four steps.

01

Sign and get credentials

Once your agreement is signed, you receive a client ID and secret for the test environment.

02

Get a token

Exchange your credentials for a bearer token (OAuth 2.0 client credentials). Tokens are valid for two days.

03

Build in the test environment

Create profiles, upload files, generate reports and test webhooks against QA, with our developers on a shared Slack channel.

04

Go live in the US or EU

Switch to production in the region that matches your customers. A basic integration can go live in as little as 24 hours.

# Get a bearer token (valid for 2 days)
curl -X POST https://"$SD_ENV"selfdecode.com/service/health-analysis/accounts/user/openid/token/ \
  -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=client_credentials"

# Then send it with every request
Authorization: Bearer <token>

From the authentication guide in the API reference.

EnvironmentUse it forBase URL
QA-B2B (test)Integration and testinghttps://qa-b2b.selfdecode.com/service/b2b-integrations/
Production USCustomers outside the EU, EEA and UKhttps://selfdecode.com/service/b2b-integrations/
Production EUCustomers in the EUhttps://eu.selfdecode.com/service/b2b-integrations/

Webhooks

No polling. Results come to you.

Register a callback URL and we send the job's full status to your system the moment it changes. Each webhook has its own secret, which you can reset at any time.

Success and failure events for every job type

Payload matches the job's GET response, so no extra mapping

Create, update and pause webhooks through the API

Events

Webhook events

Job typeYou are notified when
Health, PGx, ancestry, longevity, carrier status, clinical overview and biochemistry reportsThe report or its PDF is ready, or the job fails
Genome file uploadsThe file has been processed, or processing fails
DNA kitsThe kit has been processed, or processing fails
OrdersThe order ships, or there is an order error
Lab OCRLab results are extracted and ready to review, or the job fails

AI in your app

Embed a genome-aware AI assistant

Each chat is tied to one of your end users and can only see that user's reports, labs and genes. Your API token never reaches the browser: your backend issues a single-use handoff token that is valid for 60 seconds.

<div id="decody" style="height: 700px"></div>
<script src="https://{env}selfdecode.com/chatbot-iframe/decody-embed.js"></script>
<script>
  const handle = Decody.mount('#decody', {
    getOtt: async () => {
      const res = await fetch('/your-backend/decody-handoff', { method: 'POST' });
      if (!res.ok) throw new Error('handoff failed');
      return (await res.json()).ott;
    },
    config: { feature_name: 'Ask HealthBot', brand_color: '#0055ff' }, // optional branding
  });
</script>

Branded with your name and color

Restricted to your own domains

Choose which data the assistant can use: reports, labs, genes, PGx

Usage-based pricing, quoted with your plan

MCP: connect your own AI to each user's results.

FAQ

Developer questions

Does the API include a user interface?

No. It returns data and PDFs, and you design the experience. If you'd rather not build, launch on our branded platform.

Which DNA files can we upload?

Consumer files such as 23andMe and AncestryDNA, and genotyping array data. Whole genomes are accepted from any sequencing lab.

Which version should we use?

Version 3. Versions 1 and 2 are deprecated and no longer receive bug fixes; transition guides are in the reference.

Where is the data hosted?

In the EU (Frankfurt) for customers in the EU, EEA and UK, and in the US for everyone else.

When do we get sandbox access?

Test credentials are issued once your agreement is signed. Book a call and we'll walk you through it.

Is there a rate limit?

The token endpoint allows 5 requests per IP address every 2 minutes. Tokens last two days, so reuse them.

Start building this week.

Book a call for pricing, your agreement and test credentials.