Developer Portal

Build with the MultiEndpointTox API

A plain REST/JSON API — no SDK required, callable from any language. Everything on this page is verified against the live, deployed contract.

Overview

Base URL: https://api.bionexusdiscovery.com. Interactive OpenAPI docs (FastAPI's built-in Swagger UI) are live at /docs , with the raw OpenAPI schema at /openapi.json. That live Swagger UI is the API Explorer — a first-party interactive playground is not separately built on this site (see the roadmap).

Note: the backend repo's own docs/API.md describes an older contract (v0.3.0, 6 endpoints, no auth or rate limiting). Everything below reflects the current deployed v1.2 contract, verified against the live API and the backend source — not that stale doc.

Authentication

Authentication is optional by default (REQUIRE_AUTH is unset/false in the
deployed environment as of this writing — every endpoint documented here is
publicly callable without a token, exactly like the live demo on this site).

The backend does implement full authentication for deployments that enable
it: JWT access tokens (30 min) with rotating, reuse-detected refresh tokens
(30 day TTL), role-based access control (admin/researcher/reviewer/student),
and API keys (POST/GET/DELETE /auth/api-keys, stored as SHA-256 hashes, the
raw key shown exactly once at creation). See the backend's own
src/api/routes/auth.py for the full contract if you're deploying your own
instance with REQUIRE_AUTH=true.

Quick Start

# Health check
curl https://api.bionexusdiscovery.com/health

# Single-endpoint prediction
curl -X POST https://api.bionexusdiscovery.com/predict \
  -H "Content-Type: application/json" \
  -d '{"smiles": "CC(=O)Nc1ccc(O)cc1", "endpoint": "hepatotox"}'

# Full integrated assessment (all 7 endpoints + SHAP)
curl -X POST https://api.bionexusdiscovery.com/predict/integrated \
  -H "Content-Type: application/json" \
  -d '{"smiles": "CC(=O)Nc1ccc(O)cc1", "include_interpretation": true, "top_k": 8}'

SDKs & Examples

No published Python/JS/R package exists yet (roadmap item) — the API is plain REST/JSON, directly callable from any HTTP client today.

Rate Limits

POST /predict60 / minute
POST /predict/multi30 / minute
POST /predict/batch10 / minute (max 1000 SMILES per request)
POST /predict/integratedNot rate-limited (as of the code reviewed)
POST /predict/interpretNot rate-limited (as of the code reviewed)
POST /validate, GET /health, /version, /statusNot rate-limited

Error Handling

{
  "error": {
    "code": "string",
    "message": "human-readable description",
    "request_id": "uuid, echoes X-Request-ID if you sent one",
    "details": { "...": "validation-error-specific, when applicable" }
  }
}
200Success
400Bad request — invalid SMILES or invalid endpoint name
422Validation error — missing/malformed request fields
429Rate limit exceeded (see Rate Limits above)
503Service unavailable — predictor not yet initialized (cold start)

Changelog

The full, real changelog lives in the backend repository — rendering it here would risk drifting out of sync with each release. View CHANGELOG.md on GitLab

Status

Live health, version, and response latency, fetched directly from the deployed API.

View live status