Programmatic access

PepDiana API

Query provenance-separated Integrated peptides, Primary-literature peptides, experimental records, properties, analytics, and versioned downloads through stable REST contracts.

Data-layer contract

Stable IDs keep entity types explicit

`CTPDB_P*` identifiers are historical compatibility IDs for PepDiana Integrated records. They remain stable for reproducibility; they do not indicate that an older product name is still used publicly. Primary-literature peptides use `PEPDIA-PLP-*`, while mentions and activity records retain paper-scoped IDs.

Data methodology

Integrated Peptides

GET /api/peptidesGET /api/peptides/{peptide_id}GET /api/peptides/{peptide_id}/activitiesGET /api/peptides/{peptide_id}/properties

Primary-literature Peptides

GET /api/primary-peptidesGET /api/primary-peptides/{primary_peptide_id}GET /api/primary-peptides/{primary_peptide_id}/evidenceGET /api/primary-peptides/export

Evidence

GET /api/evidence/recordsGET /api/evidence/records/{activity_record_id}GET /api/evidence/mentions/{mention_id}GET /api/evidence/stats

Analytics and Downloads

GET /api/statsGET /api/downloadsGET /api/downloads/manifest

Quick start

curl, Python, and R

curl

curl "https://lmmd.ecust.edu.cn/pepdiana/backend/api/primary-peptides?page=1&page_size=5&activity_type=Antimicrobial"

Python

import requests

response = requests.get(
    "https://lmmd.ecust.edu.cn/pepdiana/backend/api/evidence/records",
    params={
        "evidence_status": "evidence_without_sequence",
        "activity_type": "Antimicrobial",
        "page_size": 5,
    },
    timeout=30,
)
response.raise_for_status()
records = response.json()["data"]

R

library(httr2)

result <- request("https://lmmd.ecust.edu.cn/pepdiana/backend/api/peptides") |>
  req_url_query(
    activity_type = "Anticancer",
    min_quality = 80,
    page_size = 5
  ) |>
  req_perform() |>
  resp_body_json()

Pagination and responsible use

List endpoints use `page` and `page_size`; the documented maximum is 200 rows. The current public release does not require an API key or enforce a per-key rate limit. Cache repeated analyses, paginate large jobs, and use versioned downloads instead of issuing thousands of record requests. Integrated records expose a canonical `pepdiana_id` (`PEPDIA-INT-xxxxxx`) alongside the deprecated `legacy_peptide_id`; both forms remain resolvable during the compatibility period.

License and citation

Cite PepDiana, record the `release_version`, and retain source-database or source- publication attribution. Third-party source licenses continue to apply to their contributed records. The submission citation will replace the provisional website citation after publication.

Versioned bulk data

Use the manifest for row counts, media types, SHA-256 checksums, release metadata, and reproducible paths. Evidence without sequence is omitted from FASTA because it is not a sequence-defined peptide entity.

Download manifest

Response interpretation

Traceability and calculation metadata

Integrated activity

{
  "integrated_activity_id": "CTPDB_P002975_ACT_dbaasp_0000",
  "source_id": "DBAASPS_...",
  "source_record_url": "https://dbaasp.org/...",
  "raw_value": "8 ug/mL",
  "value": 8.0,
  "unit_normalized": "ug/mL",
  "missing_value_reason": null
}

Computed properties

{
  "status": "computed",
  "method_name": "PepDiana physicochemical pipeline",
  "tool_name": "Biopython / RDKit",
  "tool_version": "1.85 / 2024.09.6",
  "release": "physchem-20260620",
  "assumptions": {"ph": 7.0, "termini": "free"},
  "quality_flags": []
}

`missing_value_reason` distinguishes values not reported by a source from values that were unavailable after import. Computed properties are release assets with methods, tool versions, assumptions, and input hashes; clients should not silently replace them with request-time calculations.