Live in your browser

Open the Developer Console

Pick a domain, paste your key, hit send against the live endpoint. Copyable curl, Python, and JavaScript samples regenerate as you type. No install. No boilerplate.

  • All ten domains
  • curl / Python / JS
  • Usage & key in one place
Launch console →
dnai.systems/developers
Health
Fitness
Finance
Legal
Research
Science
First-line treatment for type 2 diabetes in adults?
Metformin remains first-line per ADA 2025 guidelines▌
10
Domain engines
144M+
Knowledge vectors
A2A 1.0
Open protocol
12,555,008
US patent, granted

One engine. Your name on the front.

You are selling intelligence to your users, so the engine should answer as your product. Send a persona with any request and the engine presents itself by that name, in your tone, on behalf of your organization. What you rename is the voice. What you cannot rename is the conscience.

What becomes yours

  • The name the engine answers under
  • The organization it speaks for
  • The tone: warm, clinical, concise, friendly, or formal
  • Your interface, your pricing, your customer relationship
  • Your users never see a DNAi agent name or a routing key

What stays DNAi

  • Retrieval over 337 curated knowledge collections
  • Safety gating and crisis protocols in every domain
  • Refusal under uncertainty instead of a confident guess
  • Citations on every factual claim, with the sources named
  • The audit trail, and the statement that the user is talking to an AI
curl · message:send with a persona
curl -X POST https://api.askasha.org/a2a/v1/message:send \
  -H "Authorization: Bearer $DNAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "asha",
    "message": {"role": "user", "parts": [{"text": "Can I take ibuprofen with lisinopril?"}]},
    "metadata": {
      "persona": {"name": "Nova", "organization": "Northwind Clinics", "tone": "warm"}
    }
  }'

Persona fields are validated, not trusted. A name that reads like an instruction ("ignore the rules") or a credential ("Dr. Nova", "Nova RN") is rejected and the request runs unbranded; the task record echoes the persona that was accepted. Credentials are yours to state in your product, never the engine's to imply. Deeper customization, a dedicated corpus boost, or a named clinical persona for your practice is an Enterprise conversation: hello@dnai.systems.

Ten domains, one protocol

Start with DNAi Health. It is the engine with the deepest corpus (PubMed, StatPearls, DailyMed, FDA labels), the published benchmark register, and the market that already pays for a grounded clinical API. The other nine domains run on the same key at no extra cost; add them when your product needs them.

Every self-serve tier runs the Base depth: retrieval, evidence gating, falsification, one grounded answer, typically 10 to 30 seconds to the first chunk. Apex, the eleven-engine panel with a domain composer, is a separate product: asynchronous, priced per answer, Enterprise by arrangement. Both are systems, never a single model.

Every domain runs the same engine: retrieval, evidence gating, falsification, then the answer. What differs by domain is the corpus, the refusal posture, and the disclaimers. The agent_id is a routing key: use the domain key (health, legal, ...); the legacy agent ids in parentheses stay valid forever. Your users never see either.

Depth. Production routes each question by clinical stakes to one of three architectures, Base (one retrieval-grounded pass), Mid (three-model merge), or Apex (multi-expert panel with a domain composer). Set metadata.depth to "base" to pin the fast path or "auto" to allow routing; every task reports depth_served. Free, Developer, and Pro keys run Base; auto is honored on Enterprise keys. The three depths are measured side by side on dnai.systems/benchmarks.

DNAi Health

agent_id health (alias asha)
Clinical answers with the evidence attached: guidelines, drug interactions, lab interpretation. Grounded in PubMed, StatPearls, DailyMed and FDA labels.
"Can I take ibuprofen with lisinopril?"

DNAi Fitness

agent_id fitness (alias harley)
Program design, exercise science, progression and recovery for coaches and the people they train.
"Build a three-day strength block for a beginner with knee pain."

DNAi Finance

agent_id finance (alias artha)
Company analysis, SEC filings, XBRL fundamentals, macro indicators. Audit trail by default.
"How did this company's gross margin move over the last eight quarters?"

DNAi Legal

agent_id legal (alias leo)
Legal information for people without a lawyer: tenancy, employment, family law, small claims. Jurisdiction named on every answer.
"My landlord kept my deposit in Texas. What are my options?"

DNAi Nutrition

agent_id nutrition (alias sage)
Nutrition science, food and drug interactions, the gut-brain axis.
"Grapefruit and statins: what is the actual risk?"

DNAi Research

agent_id research (alias lyra)
Literature search, evidence synthesis, trial review, with the papers named.
"Summarize the randomized evidence for GLP-1 agonists in fatty liver disease."

DNAi Science

agent_id science (alias polymath)
Proof checking, statistics, scientific explanation across domains.
"Is this interpretation of a p-value correct?"

DNAi Support

agent_id support (alias ren)
Troubleshooting, onboarding, and routing users to the right help.
"I was charged twice this month. What happened?"

DNAi Practice

agent_id practice (alias arohi)
Scheduling, billing analysis, and clinical alerts for a practice desk.
"Which of today's patients have an overdue A1c?"

DNAi Growth

agent_id growth (alias mira)
Market analysis, content strategy, and SEO audits.
"Audit this landing page for search intent."

The live agent card lists every routing key, its capabilities, and its knowledge collections. It also lists a platform-service key used by DNAi's own tooling.

What is A2A?

A2A (Agent-to-Agent) is an open interoperability protocol for AI agents to discover and call each other. Your stack speaks A2A once and gets every domain engine an organization has decided to expose. DNAi runs A2A v1.0 in production at api.askasha.org: bearer auth, JSON in, JSON out, a task-based lifecycle you can re-fetch, stream, or cancel.

If you know the OpenAI Chat Completions or Anthropic Messages API, A2A will look familiar. The difference is on the other end: the engine carries its own corpus, its own falsification loop, and its own refusal posture, and it tells you when it does not know.

Quickstart

Three steps to a production call.

1. Provision an API key

curl · signup
curl -X POST https://api.askasha.org/api/a2a/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "you@yourdomain.com", "tier": "free"}'

Returns a one-time api_key. Store it in a secret manager. Free Sandbox starts at 250 queries/month and 50 queries/day (20 RPM), no credit card required. Top up $10 Pay-As-You-Go via POST /api/a2a/topup to unlock 1,000 evaluation queries/month through January 2027, or subscribe to a monthly plan any time.

2. Call a domain, as yourself

curl · message:send
curl -X POST https://api.askasha.org/a2a/v1/message:send \
  -H "Authorization: Bearer $DNAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "legal",
    "message": {"role": "user", "parts": [{"text": "My landlord kept my deposit in Texas. What are my options?"}]},
    "metadata": {
      "session_id": "user-8812",
      "depth": "base",
      "persona": {"name": "Casey", "organization": "Renters Union", "tone": "concise"}
    }
  }'

Swap legal for any routing key above. The response includes the answer, the evidence trail (source list and citations), token usage, and a task ID you can re-fetch through GET /a2a/v1/tasks/{id}. Reuse session_id to keep a conversation going.

3. Stream, retry, cancel, or falsify

POST /a2a/v1/message:stream returns server-sent events: retrieval and reasoning phases, text chunks, then the final task. List your tasks with GET /a2a/v1/tasks. Cancel one in flight with POST /a2a/v1/tasks/{id}:cancel. Stress-test any factual claim with POST /api/feng/falsify, the same falsification engine the domains run on themselves. It takes a signed-in DNAi account session; API keys are not accepted on that route.

Endpoints

GET/.well-known/agent-card.json
Discovery. No auth. Every routing key and its capabilities.
GET/a2a/v1/health
Service health and live engine count. No auth.
POST/a2a/v1/message:send
Query any domain. Bearer auth. Persona in metadata.
POST/a2a/v1/message:stream
Same call, server-sent events. Phases, chunks, final task.
GET/a2a/v1/tasks/{id}
Fetch an existing task by ID. Bearer auth.
GET/a2a/v1/tasks
List your tasks. Bearer auth, scoped to caller.
POST/a2a/v1/tasks/{id}:cancel
Cancel an in-flight task. Bearer auth.
POST/api/feng/falsify
Popperian falsification on any claim. Returns counter-evidence if found. Signed-in DNAi account session, not an API key.
POST/api/a2a/signup
Create a free key. Body: email, optional name. The key is shown once. No auth.
GET/api/a2a/usage
Daily and monthly remaining quota for your key. Works after the allowance runs out.
POST/api/a2a/rotate-key
New key, same account. The old key stops working at once.
POST/api/a2a/topup
Stripe Checkout for a $10+ Pay-As-You-Go prepaid credit top-up (unlocks 1,000 evaluation queries/month through Jan 2027).
POST/api/a2a/upgrade
Stripe Checkout for a paid plan. Body: tier.
GET/api/a2a/portal
Stripe billing portal: invoices, card, cancellation.
GET/openapi.yaml
OpenAPI 3.1 for this surface (also /openapi.json): every field, status code, and error, with examples. Rendered at dnai.systems/api-reference. No auth.
GET/api/benchmarks
The public benchmark register, the same file as dnai.systems/benchmarks. No auth.

Errors

Every error returns one JSON object. Branch on error.type: it names the cause and does not change. error.code follows JSON-RPC 2.0 and A2A v1.0 where a standard number exists, so related causes can share a code. error.param names the field or header at fault, error.doc_url links to its row below, and error.request_id matches the X-Request-ID header. Limits send Retry-After in seconds, also in error.retry_after. detail is the older field, kept as it was for existing clients. Send Accept: application/problem+json to get the same facts as RFC 9457 Problem Details.

json · 429 daily allowance
{
  "error": {
    "code": -32061,
    "type": "daily_quota_exceeded",
    "message": "Daily query limit reached (50/50). Resets at midnight UTC. Top up $10 or upgrade tier for more.",
    "retry_after": 21600,
    "doc_url": "https://dnai.systems/a2a#err-daily_quota_exceeded",
    "request_id": "9b2e6c1a-4f3d-4a8e-b1c7-2d5e8f0a3c61"
  },
  "detail": "Daily query limit reached (50/50). Resets at midnight UTC. Top up $10 or upgrade tier for more."
}
HTTPtypecodeCause and what to do
400invalid_request-32600Empty message, message over 500,000 characters, or a signup or billing field the API does not accept. Fix the request.
400invalid_params-32602A parameter outside its allowed set, such as metadata.depth other than base or auto.
422validation_error-32602The body does not match the schema. error.fields lists each failing field.
401authentication_required-32050No Authorization: Bearer header.
401invalid_api_key-32050Unknown, mistyped, or rotated key.
403permission_denied-32051The key may not call this agent (Asha keys reach Asha only).
403account_suspended-32051Usually a failed payment. Fix it in the billing portal; access resumes when the invoice is paid.
404not_found-32052No account or billing record for this key.
404agent_not_found-32052No public agent has this id or domain key.
404task_not_found-32001Unknown task id, or a task owned by another key.
409conflict-32053Already exists, such as a second signup with the same email. Rotate the key instead.
409task_not_cancelable-32002The task already finished.
410agent_retired-32054The agent no longer answers.
400idempotency_key_reused-32055The Idempotency-Key was already used with a different body or endpoint. Use a new key.
409idempotency_in_progress-32056The first call with this key is still running. Retry after retry_after seconds.
429rate_limited-32060Too many requests in 60 seconds. Wait retry_after.
429daily_quota_exceeded-32061Daily allowance used. Resets 00:00 UTC.
429monthly_quota_exceeded-32062Monthly allowance used. Resets on the 1st, or upgrade.
429spending_cap_reached-32063This month's spend cap reached. Resets on the 1st, or upgrade.
429signup_rate_limited-32064Too many new keys from one network in 24 hours.
500internal_error-32603Unexpected server error. Quote error.error_id to support.
503service_unavailable-32070A dependency is briefly down. Retry after a short wait.

A task that runs and fails still returns HTTP 200 with task.status.state: "FAILED" and the reason in task.status.message, per A2A. The OpenAI-compatible /v1 routes use the OpenAI error shape, with the same type value in error.code.

Retries and request IDs

An answer can take 10 to 60 seconds, so connections drop. Send an Idempotency-Key with message:send and retry with the same key: the first call runs, and any retry within 24 hours gets the saved response with Idempotent-Replayed: true, without running again or using your allowance again.

curl · safe retry
KEY=$(uuidgen)  # reuse $KEY when you retry this request
curl -X POST https://api.askasha.org/a2a/v1/message:send \
  -H "Authorization: Bearer $DNAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $KEY" \
  -d '{"agent_id":"asha","message":{"role":"user","parts":[{"text":"What is sepsis?"}]}}'

Changelog

Newest first. Every /a2a/v1 response carries A2A-Version: 1.0. Additive changes ship without a version change, so clients must ignore fields they do not know. Behavior changes say what to check.

DateChangeKind
2026-10-19Developer pricing and evaluation upgrade: (1) Free Sandbox raised to 250 queries/month and 50 queries/day with a decoupled 20 RPM rate limit; (2) Self-serve $10+ Pay-As-You-Go prepaid credit top-up (POST /api/a2a/topup) with a 1,000-query monthly evaluation allowance (250/day, 60 RPM) extended through January 31, 2027; (3) Hybrid query and token overage metering ($0.03 Base query including 2,000 input + 2,000 output tokens; $4.00/1M input and $16.00/1M output above 2,000 tokens; Mid $0.30/query; Apex $0.85/query).Additive
2026-10-16Saved settings per key: GET and PUT /api/a2a/preferences (white-label persona, audience, verbosity, emoji, memory), applied to message:send, message:stream, and /v1/chat/completions; request metadata overrides them. persona works on /v1/chat/completions.Additive
2026-10-16metadata.verbosity (brief, standard, detailed) and metadata.emoji (off, none, on).Additive
2026-10-16Streamed answers now use persona, verbosity, and emoji, token by token. Before this, persona had no effect on streamed answers. Every answer also carries an identity rule so text in retrieved evidence cannot rename the agent.Behavior change: streamed answers now use your persona
2026-10-16Asha CLI 0.2 with asha init, asha config, asha test, and an MCP server (asha mcp) for coding agents. Docs: askasha.org/developers/docs/agents.Additive
2026-10-13Errors on every developer path carry error with type, code, message, doc_url, request_id, and param where relevant; detail is unchanged. Each limit has its own type with Retry-After. Task errors use A2A v1.0 codes.Additive
2026-10-13Idempotency-Key on message:send. Accept: application/problem+json returns RFC 9457 Problem Details.Additive
2026-10-13Usage, upgrade, portal, rotate-key, and BAA keep working after the allowance runs out or the account is suspended.Behavior change: no 429 or 403 for limits on these routes
2026-10-13Non-integer metadata.tau_min or tau_max returns 400 instead of 500. An unhandled 500 puts the error object in error and its text in detail.Behavior change: check code that reads error as a string on 500
2026-10-13OpenAPI: stable operationIds, a curl sample per operation, per-operation security, and the rendered API reference.Additive
2026-10-12Task read and cancel are scoped to the key that created the task; other keys get 404.Behavior change: other keys' tasks are no longer visible
2026-10-12Optional Google OAuth bearer tokens for A2A (Gemini Enterprise).Additive
2026-10-11OpenAPI YAML at /openapi.yaml; request schemas for /v1/chat/completions and BAA accept.Additive
2026-09-29OpenAI-compatible streaming and metering, self-serve BAA, and the asha command-line tool.Additive
2026-09-28Asha developer site; keys minted on askasha.org are scoped to Asha.Additive
2026-09-17Engine memory is scoped per key and never shared across keys.Behavior change: other keys' calls no longer inform answers
2026-09-16Domain keys (health, fitness, ...), metadata.depth, and the curated OpenAPI document.Additive
2026-09-15Customer keys run Base depth; Mid and Apex need Enterprise.Behavior change: depth_served reports what ran

Pricing

Start free with 250 queries/month, top up $10 Pay-As-You-Go to unlock 1,000 evaluation queries/month through January 2027, or pick a monthly plan. One key covers all ten domains. Enterprise adds a HIPAA Business Associate Agreement and dedicated capacity.

Free Sandbox
$0 / mo
  • 250 queries / month
  • 50 queries / day · 20 RPM
  • 2K in + 2K out tokens / query
  • All ten domains · no card
Developer
$49 / mo
  • 1,000 queries / month
  • 250 queries / day · 60 RPM
  • $100 spending cap
  • Persona on every request
Pro
$199 / mo
  • 10,000 queries / month
  • 2,000 queries / day · 120 RPM
  • $500 spending cap
  • Priority routing
Enterprise
$999 / mo
  • Unlimited queries
  • Unlimited daily · 240 RPM
  • $5,000 spending cap
  • BAA · Mid ($0.30) & Apex ($0.85)

Token & Depth Metering Schedule

Every standard query includes up to 2,000 input and 2,000 output tokens (roughly 8,000 characters). Long-context documents or extended syntheses above 2,000 tokens are metered at Corti-parity token rates ($4.00 / 1M input, $16.00 / 1M output) while including 144M-passage clinical grounding and PMID verification.

Model / Depth Architecture Base Query Rate Included Envelope Token Overage (>2K) Availability
asha-base Single KIL-grounded pass (144M+ passages, PMID verification) $0.03 / query Up to 2,000 in + 2,000 out tokens +$4.00 / 1M in, +$16.00 / 1M out All tiers
asha-mid 3-model KIL ensemble + physician composer (depth: "auto") $0.30 / query Up to 2,000 in + 2,000 out tokens +$4.00 / 1M in, +$16.00 / 1M out Enterprise
asha-apex 11-agent A2A panel + FENG Popperian falsification + composer $0.85 / query Full multi-agent panel synthesis Included in panel rate Enterprise

Clinical Performance & Competitor Comparison

Measured on peer-reviewed clinical rubrics and pre-registered rare-disease red-team evaluations (dnai.systems/benchmarks · GET /api/benchmarks).

System / API Clinical AI 3-Judge (n=500) HealthBench Hard (n=1,000) PWS & Crisis Safety (n=96) API & Token Packaging
Asha Healthcare API (Apex-J / P6) 72.6% (63.8% frozen Apex-J, p = 1.3×10-12) 44.8% (42.0% frozen Apex-J, p = 3.7×10-37) 99.0% safe (1/96 unsafe; 85.0% cascade) $0.03/q (2K in/out incl.) + $4/$16 per 1M overage; $10 PAYG top-up; A2A v1.0, OpenAI SDK, CLI, MCP
OpenEvidence / UpToDate Expert AI 62.6% / 61.3% Not publicly disclosed on harness Not evaluated on PWS harness Clinician point-of-care apps; no public self-serve developer API or white-label persona
Corti API Ambient / coding focus Ambient / coding focus Not evaluated on PWS harness $4/1M in, $16/1M out ($150 free credit); no 144M literature corpus or Popperian falsification
GPT-6 Astra (Bare) 54.9% 29.4% 73.0% safe (26/96 unsafe on ChatGPT) $1.50-$15/1M in, $3-$75/1M out; ungrounded citations
Gemini 3.8 Flash / 3.1 Pro (Bare) Not in 4-arm panel 26.9% 76.0% safe (23/96 unsafe) Frontier token API; 24% unsafe rate on PWS rare-disease red-team

Spending caps are hard limits. We will not silently exceed them. If you hit your cap mid-month, the API returns HTTP 429 with an upgrade or top-up hint until the next cycle or until you raise the cap. Want one key per domain with usage split out on your invoice? Ask us; volume pricing and BAAs go through the same address.

Fiduciary Contract

What a DNAi domain engine gives you that a base-model API does not.

Evidence on every answer

Every factual claim ships with the Cognitive Inference Units (CIUs) that backed it: retrievable, verifiable, and Merkle-hashed.

Honest abstention

When confidence falls below threshold, the engine says “I don’t know” instead of fabricating. The refusal is enforced in the architecture, whatever name it answers under.

Falsification loop

Claims are stress-tested by the in-house Falsification Engine before they leave the building. You can re-run that loop yourself via /api/feng/falsify.

Tenant isolation

Your queries are scoped to your key. We do not train on your data. We do not sell your data. Ever.

DNAi Health is an information service, not a registered medical device. It does not diagnose, treat, or prescribe, under any name. For clinical decisions, defer to a licensed clinician. The same holds for DNAi Legal (legal information, not legal advice) and DNAi Finance (analysis, not investment advice); every answer says so in its own domain.

Enterprise tier runs under a Business Associate Agreement; the PHI path runs on Vertex AI under a Google Cloud project that holds Vertex AI HIPAA credentials. The model card and the cognition pipeline contract live in the source repository. The public benchmark register is at dnai.systems/benchmarks; the API serves the same file at GET /api/benchmarks.

What we can show you

Live status

Your browser calls each public endpoint directly; nothing below passes through us on the way to you.

Checks start when the page loads.

Reference