● REST API · v1

Catalog & CoA API.

Programmatic access to the Omni Research peptide catalog, released lots, and Certificates of Analysis. JSON over HTTPS, bearer-token auth, predictable resource URLs.

https://api.omnilabs.bio/v1AuthenticationEndpointsErrors

Authentication

All requests require a bearer token issued to your account. Tokens are scoped per environment (live and test). Never expose secret keys in client-side code.

cURL
curl https://api.omnilabs.bio/v1/catalog \
  -H "Authorization: Bearer sk_live_..." \
  -H "Accept: application/json"

Endpoints

GET/catalog

List peptide APIs

Returns the active peptide API catalog with current stock posture, available scales, and release purity floor.

Parameters
  • scalestring

    Filter by scale: g, 100g, kg.

  • in_stockboolean

    Only return items with on-hand inventory.

  • limitinteger

    Page size, max 100. Default 50.

  • cursorstring

    Pagination cursor from previous response.

Example request
curl https://api.omnilabs.bio/v1/catalog \
  -H "Authorization: Bearer sk_live_..."
200 OK
{
  "object": "list",
  "data": [
    {
      "code": "OL-101",
      "name": "Semaglutide",
      "cas": "910463-68-2",
      "purity_floor": "99.0",
      "scales": ["g", "100g", "kg"],
      "in_stock": true,
      "lead_time_days": 7
    },
    {
      "code": "OL-102",
      "name": "Tirzepatide",
      "cas": "2023788-19-2",
      "purity_floor": "99.0",
      "scales": ["g", "100g", "kg"],
      "in_stock": true,
      "lead_time_days": 10
    }
  ],
  "has_more": true,
  "next_cursor": "cur_8a2f"
}
GET/catalog/{code}

Retrieve a catalog item

Returns full specification, release criteria, packaging options, and the latest released lot for a single API.

Parameters
  • codestringrequired

    Catalog code, e.g. OL-101.

Example request
curl https://api.omnilabs.bio/v1/catalog/OL-101 \
  -H "Authorization: Bearer sk_live_..."
200 OK
{
  "code": "OL-101",
  "name": "Semaglutide",
  "cas": "910463-68-2",
  "molecular_formula": "C187H291N45O59",
  "molecular_weight": 4113.58,
  "release_spec": {
    "appearance": "White to off-white lyophilized powder",
    "identity": "Conforms by HPLC and LC-MS",
    "purity_hplc": ">= 99.0%",
    "water_kf": "<= 6.0%",
    "endotoxin_lal": "<= 5 EU/mg",
    "bioburden": "<= 10 CFU/g"
  },
  "scales": ["g", "100g", "kg"],
  "packaging": ["amber glass", "HDPE, double-bag, foil-overwrap"],
  "latest_lot": {
    "lot": "OL101-2026-A047",
    "released_at": "2026-05-14",
    "purity": "99.4",
    "coa_id": "coa_2026_A047"
  }
}
GET/catalog/{code}/lots

List released lots

Returns released lots for a given API, newest first.

Parameters
  • codestringrequired

    Catalog code.

  • limitinteger

    Page size, max 100. Default 25.

Example request
curl https://api.omnilabs.bio/v1/catalog/OL-101/lots \
  -H "Authorization: Bearer sk_live_..."
200 OK
{
  "object": "list",
  "data": [
    {
      "lot": "OL101-2026-A047",
      "released_at": "2026-05-14",
      "retest_date": "2028-05-14",
      "purity": "99.4",
      "coa_id": "coa_2026_A047"
    },
    {
      "lot": "OL101-2026-A031",
      "released_at": "2026-03-02",
      "retest_date": "2028-03-02",
      "purity": "99.2",
      "coa_id": "coa_2026_A031"
    }
  ],
  "has_more": false
}
GET/coa/{coa_id}

Retrieve a Certificate of Analysis

Returns the structured CoA for a released lot, including test methods, results, and a signed PDF URL.

Parameters
  • coa_idstringrequired

    CoA identifier, e.g. coa_2026_A047.

Example request
curl https://api.omnilabs.bio/v1/coa/coa_2026_A047 \
  -H "Authorization: Bearer sk_live_..."
200 OK
{
  "coa_id": "coa_2026_A047",
  "product": "Semaglutide",
  "code": "OL-101",
  "lot": "OL101-2026-A047",
  "manufactured_at": "2026-05-09",
  "released_at": "2026-05-14",
  "retest_date": "2028-05-14",
  "results": [
    { "test": "Appearance", "method": "Visual", "spec": "White to off-white powder", "result": "Conforms" },
    { "test": "Identity", "method": "LC-MS", "spec": "Conforms", "result": "Conforms" },
    { "test": "Purity", "method": "RP-HPLC", "spec": ">= 99.0%", "result": "99.4%" },
    { "test": "Water", "method": "Karl Fischer", "spec": "<= 6.0%", "result": "4.1%" },
    { "test": "Endotoxin", "method": "LAL", "spec": "<= 5 EU/mg", "result": "< 0.5 EU/mg" }
  ],
  "released_by": "QA-217",
  "pdf_url": "https://files.omnilabs.bio/coa/coa_2026_A047.pdf",
  "sha256": "9f1c…e84b"
}
POST/coa/verify

Verify a CoA hash

Confirms that a CoA PDF you possess matches the canonical record on file. Submit the SHA-256 digest of the PDF bytes.

Request body
{
  "coa_id": "coa_2026_A047",
  "sha256": "9f1c2a7b4d…e84b"
}
Example request
curl https://api.omnilabs.bio/v1/coa/verify \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d @body.json
200 OK
{
  "coa_id": "coa_2026_A047",
  "valid": true,
  "released_at": "2026-05-14",
  "product": "Semaglutide",
  "lot": "OL101-2026-A047"
}

Errors

The API returns conventional HTTP status codes. Error bodies share a common shape.

Error response
{
  "error": {
    "type": "invalid_request",
    "code": "catalog_item_not_found",
    "message": "No catalog item with code 'OL-999'.",
    "request_id": "req_01HV...J7"
  }
}
StatusMeaning
400Invalid parameters
401Missing or invalid token
403Token lacks scope
404Resource not found
429Rate limit exceeded
5xxOmni Research server error