HTTP API
Everything the web interface does goes through a documented HTTP API under the /api
namespace — every workflow step can be automated and integrated into external scripts.
Interactive documentation
With BibexPy running, open:
http://127.0.0.1:6060/api/docs
FastAPI's interactive Swagger UI lists every endpoint with schemas and lets you call them directly from the browser.
Shape of the API
| Area | Examples |
| --- | --- |
| Projects | GET/POST /api/projects, file upload, deletion |
| Merge | start Smart Merge, poll job progress (SSE stream) |
| Records | query/filter records, quality overview, uncertain pairs |
| Harmonization | disambiguation runs, address roll-up, enrichment jobs |
| Export | trigger exports, download generated files |
| Report | audit log, operation report generation |
| Settings | provider keys, thresholds |
| Tools | standalone format conversion |
Long-running operations run as jobs: you start one, then follow progress via the jobs endpoint or its server-sent-events stream — exactly how the UI does it.
Example: drive a merge from Python
import requests
BASE = "http://127.0.0.1:6060/api"
# create a project and upload raw exports
p = requests.post(f"{BASE}/projects", json={"name": "Scripted"}).json()
with open("scopus.csv", "rb") as f:
requests.post(f"{BASE}/projects/{p['id']}/files", files={"files": f})
# start the merge job and poll it
job = requests.post(f"{BASE}/projects/{p['id']}/merge/smart").json()
Local by design
The API binds to 127.0.0.1 — it is your local automation surface, not a public service. Scripts running on the same machine need no authentication.
