For developers
A stable, read-only JSON feed of every tracked peptide's FDA compounding status.
Free. Read-only. No key required.
One JSON file, kept current. No signup, no API key, no rate-limit tier to pick. It's a static file served from Cloudflare's edge behind the same cache as every other page here.
curl https://findlegitpeptides.com/status.json # pretty-print one compound with jq curl -s https://findlegitpeptides.com/status.json | jq '.compounds[] | select(.name=="BPC-157")'
Freshness: rebuilt and redeployed at least daily at 6 AM CT, more often during the July 23-24 PCAC meeting window. Check generated_utc in the response for the exact build time.
Attribution: if you use this data, please link back to findlegitpeptides.com so readers can trace a status back to its source.
Informational only, not medical or legal advice. Confirm anything that matters against FDA primary sources before you act on it.
Field by field
Top-level fields, then the shape of each entry in compounds[].
String, ISO 8601 UTC timestamp. When this file was last built.
String. Internal version tag for the underlying dataset, e.g. 0.2.0-draft.
String. Site version at build time, e.g. 2.3.0.
String, always present. Informational only, not medical or legal advice.
Array of objects. The regulatory timeline: date, event, sources, confidence, and an optional caveat.
Array of objects. One row per tracked peptide, see the compound fields below.
String. Compound display name, e.g. BPC-157.
String or null. Category id: metabolic, recovery, longevity, cognitive, hormonal, sexual, dermatologic, or blends.
String. Internal status code, e.g. under_pcac_review, cat2_restricted, removed_from_cat2, fda_approved.
String. Plain-language status sentence, ready to display as-is.
String, one of clear, watch, restrict, unknown. The visual bucket behind the status badge color. A blend always shows unknown here, it follows its components.
String: high, medium, or low. Sourcing confidence for status_code and status_label.
Object or null. PCAC advisory-committee review info: scheduled (boolean), date, forms.
Array of strings or null. Present only for blends: the individual compounds whose combined status this entry follows.
Array of objects. Citations: url, type, date, and an optional note.
String date, YYYY-MM-DD. When a human last checked this entry.
Boolean. True if the entry is still pending pre-launch verification, treat with extra caution.
Drop it in a page, no build step
Every tracked peptide has a small, self-contained status card at /embed/<slug>. It follows your visitor's system light/dark setting automatically, and it's built to sit at roughly 320 by 120 pixels.
<iframe src="https://findlegitpeptides.com/embed/bpc-157" width="320" height="120" loading="lazy" title="BPC-157 compounding status, findlegitpeptides.com" referrerpolicy="no-referrer-when-downgrade"> </iframe>
Swap bpc-157 for any tracked compound's slug, the same slug used in its own page URL (e.g. this site's /bpc-157 page embeds at /embed/bpc-157).
What changed
Public API docs published (this page): field-by-field reference for status.json, plus embeddable per-compound status widgets at /embed/<slug>.
status.json existed and was served the same way, without a documented field reference or embeds.