Skip to content
API Documentation

PepAssure REST API

Programmatic access to vendor rankings, peptide prices, and CoA batch verification. Built for labs, research platforms, and quality tooling.

Base URL: https://pepassure.com/api/v1

Enterprise plan required

Quick Start

Your First API Call

1Get your API key

Upgrade to the Enterprise plan, then visit Dashboard → API Keys to generate your key. It's shown once — store it in a secrets manager.

2Make a request

bash
curl https://pepassure.com/api/v1/vendors \
  -H "Authorization: Bearer pvs_live_sk_YOUR_KEY"

3Handle the response

Every successful response wraps the payload in the same envelope: your result under data, plus data_updated_at (ISO 8601) so you can cache honestly.

json
{
  "data": {
    "vendors": [
      { "slug": "paradigm-peptides", "score": 94, "verified": true, ... }
    ],
    "total": 47,
    "limit": 50,
    "offset": 0
  },
  "data_updated_at": "2026-07-03T12:00:00.000Z"
}

Authentication

API Keys

All API requests require a Bearer token in the Authorization header. Keys are minted in Dashboard → API Keys (Enterprise plan), never expire, and can be revoked there at any time — a revoked key gets 401 on its next request.

Request header format

Authorization: Bearer pvs_live_sk_1234567890abcdef

Security

Never expose API keys in client-side code or public repositories. Rotate immediately if compromised (revoke in the dashboard, then generate a new key). Use server-side proxies for browser-based applications.

Rate Limits

1,000 Requests / Day

Enterprise

1,000 / day

Per key, rolling 24-hour window

Need more?

Custom

Contact sales

Going over the limit returns 429 with a Retry-After header — back off and retry after that many seconds. Current usage per key is shown on the dashboard API tab.

HTTP/1.1 429 Too Many Requests
Retry-After: 3600

{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit of 1000 requests per 24 hours exceeded. Retry later.",
    "status": 429
  }
}

Endpoints

REST Reference

GET/api/v1/vendors

Ranked list of scored vendors — the same override-merged data as the homepage rankings, sorted by PVS score. Supports ?limit (default 50, max 200) and ?offset.

Example request

curl "https://pepassure.com/api/v1/vendors?limit=2" \
  -H "Authorization: Bearer pvs_live_sk_..."

Example response

{
  "data": {
    "vendors": [
      {
        "slug": "paradigm-peptides",
        "name": "Paradigm Peptides",
        "score": 94,
        "verified": true,
        "location": "USA",
        "pillars": {
          "coa": 96,
          "sentiment": 92,
          "purity": 97,
          "transparency": 93,
          "experience": 90
        }
      }
    ],
    "total": 47,
    "limit": 2,
    "offset": 0
  },
  "data_updated_at": "2026-07-03T12:00:00.000Z"
}
GET/api/v1/vendors/{slug}

One vendor's full public report: score, pillars, description, and score history. The website field only appears for vendors whose plan includes outbound links.

Example request

curl https://pepassure.com/api/v1/vendors/paradigm-peptides \
  -H "Authorization: Bearer pvs_live_sk_..."

Example response

{
  "data": {
    "slug": "paradigm-peptides",
    "name": "Paradigm Peptides",
    "score": 94,
    "verified": true,
    "pending": false,
    "location": "USA",
    "pillars": { "coa": 96, "sentiment": 92, "purity": 97, "transparency": 93, "experience": 90 },
    "description": "...",
    "website": "https://paradigmpeptides.com",
    "scoreHistory": [88, 90, 91, 93, 94]
  },
  "data_updated_at": "2026-07-03T12:00:00.000Z"
}
GET/api/v1/peptides/{slug}/prices

Merged price table for one peptide (live vendor listings over the static baseline), sorted in-stock first, then claimed vendors, then $/mg — the first in-stock row is the Best Price shown on site.

Example request

curl https://pepassure.com/api/v1/peptides/bpc-157/prices \
  -H "Authorization: Bearer pvs_live_sk_..."

Example response

{
  "data": {
    "slug": "bpc-157",
    "name": "BPC-157",
    "category": "Healing",
    "prices": [
      {
        "vendorSlug": "amino-asylum",
        "vendorName": "Amino Asylum",
        "totalUsd": 22,
        "vialMg": 5,
        "perMg": 4.4,
        "inStock": true,
        "claimed": true,
        "live": true,
        "stale": false,
        "updatedAt": "2026-06-28T09:14:00.000Z"
      }
    ]
  },
  "data_updated_at": "2026-06-28T09:14:00.000Z"
}
GET/api/v1/batches/{batchId}

Batch-number → CoA verification. Returns a union on state: verified, stale (tested >150 days ago), pending (unreviewed submission), or missing. Always 200 — missing is an answer, not an error.

Example request

curl https://pepassure.com/api/v1/batches/BPC-2026-0412 \
  -H "Authorization: Bearer pvs_live_sk_..."

Example response

{
  "data": {
    "state": "verified",
    "batchId": "BPC-2026-0412",
    "peptideName": "BPC-157",
    "vendorSlug": "paradigm-peptides",
    "vendorName": "Paradigm Peptides",
    "vendorVerified": true,
    "purity": 99.2,
    "lab": "Janoshik",
    "testMethod": "HPLC-MS",
    "testedAt": "2026-05-02T00:00:00.000Z",
    "ageDays": 62,
    "source": "external",
    "sourceUrl": "https://..."
  },
  "data_updated_at": "2026-07-03T12:00:00.000Z"
}

Errors

HTTP Status Codes

401

Unauthorized

Missing, malformed, unknown, or revoked API key

404

Not Found

Vendor or peptide slug doesn't exist

429

Rate Limited

Over 1,000 requests in 24 hours — respect the Retry-After header

500

Server Error

Something went wrong on our end

Error response format

json
{
  "error": {
    "code": "invalid_api_key",
    "message": "The provided API key is not valid.",
    "status": 401
  }
}

Ready to build?

API access is included in the Enterprise plan. Get in touch to learn more or upgrade today.