latest update:
[RxAtlas]

Quickstart · first response in under two minutes

Use this keyless API example to verify the response shape. Use the 150-record email sample to evaluate coverage before buying.

Step 1 — run a keyless API example

Run this without a token to verify transport, pagination, and response shape. Request the 150-record sample by email for product evaluation.

curl (no auth)bash
# List records — no token needed
curl "https://api.rxatlas.dev/v1/drugs?sample=1&limit=5"

# Fetch one record in full — use any id from the list above
curl "https://api.rxatlas.dev/v1/drugs/{id}?sample=1"

The response follows the standard envelope: data array, has_more flag, and next_cursor for keyset pagination. Every record includes a _provenance subtree with per-field source attribution.

Step 2 — get a free key

Sign in at the portal with your email. You receive a free key prefixed rxatlas_live_… scoped to the small API preview fixture with a higher daily limit than the keyless tier (100 req/day vs. 20 req/day per IP).

Free keys are scoped to the API preview fixture, not the downloadable evaluation sample. For the full dataset, pay per row or purchase a plan from the pricing page — your key upgrades automatically.

Step 3 — pay for one full-data call

No subscription is required for one-off access. A full record costs $0.025 per row; search pages cost $0.10, and coverage calls cost $0.25. Settlement uses x402 (USDC on Base) or MPP (USDC on Base and Tempo).

curl (payment quote)bash
curl -i "https://api.rxatlas.dev/v1/drugs/{id}"
# → 402 Payment Required
# x402 v2: decode PAYMENT-REQUIRED, then retry with PAYMENT-SIGNATURE;
# read PAYMENT-RESPONSE after settlement.
# x402 v1 compatibility: retry with X-PAYMENT and read X-PAYMENT-RESPONSE.
# MPP: read WWW-Authenticate, then retry with
# Authorization: Payment <credential>; read Payment-Receipt.
A settled pay-per-call request is an immediate machine transaction, not an account purchase. It creates no confirmation email or order reference, so retain the protocol receipt and on-chain transaction reference. The refund policy explains the separate machine-payment process.

Step 4 — make a plan-authenticated call

Pass your token in the Authorization header:

curl (with token)bash
curl "https://api.rxatlas.dev/v1/drugs?limit=10" \
  -H "Authorization: Bearer rxatlas_live_····"
Python (requests)python
import requests

TOKEN = "rxatlas_live_····"
API   = "https://api.rxatlas.dev/v1"

resp = requests.get(
    f"{API}/drugs",
    headers={"Authorization": f"Bearer {TOKEN}"},
    params={"limit": 10},
)
resp.raise_for_status()
records = resp.json()["data"]
TypeScript (fetch)typescript
const TOKEN = "rxatlas_live_····";
const API   = "https://api.rxatlas.dev/v1";

const res = await fetch(`${API}/drugs?limit=10`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();

Step 5 — test dataset workflows

These examples are the first calls most evaluators should try for this dataset.

  • Resolve a product NDC
    /v1/drugs?ndc=75834-258&limit=5

    Resolve an FDA product NDC through authenticated production access.

  • Fetch one canonical product
    /v1/drugs/147244

    Inspect one canonical drug product with provenance and cross-source IDs.

  • List data sources
    /v1/sources

    Inspect the source registry behind the delivered dataset.

Next steps

You have a working connection. Where to go next depends on your use case:

  • →REST API reference — full endpoint list, pagination, rate limits, error semantics.
  • →MCP server — connect Claude, Cursor, or any MCP-compatible agent in two minutes.
  • →Data dictionary — provenance model and key fields.
  • →Coverage — current counts, freshness, and known limits.