harmony Data API
Curated medical conference and journal data from Orbytel Group, for biopharma teams. Read it from your own systems, or open a live table in Excel, with no developer needed.
API referenceEvery endpoint, parameter and field.
Keep a copy in syncLoad everything once, then fetch only changes.
Excel & Power BIA refreshable table in a few clicks.
OpenAPI specificationGenerate a client or import into Postman.
Quick start
- Get a key. Orbytel Group issues it with your license; it starts with
odk_live_. Keep it secret, like a password. - Make a request. Send the key in the
Authorizationheader:curl https://api.orbytelgroup.com/v1/conferences?year=2027&therapy_area=Oncology&limit=5 \ -H "Authorization: Bearer $ORBYTEL_KEY"
- Read the response. Records are in
data; ifhas_moreis true, passnext_cursorascursorto get the next page.
The basics
| Base URL | https://api.orbytelgroup.com/v1 (HTTPS only) |
|---|---|
| Authentication | Authorization: Bearer <key>, or X-API-Key: <key> for tools that can't set Authorization |
| Datasets | conferences and journals; your license decides which, and for conferences which therapy areas, countries and years |
| Format | JSON, UTF-8. Dates YYYY-MM-DD; timestamps UTC ISO 8601. Empty values are null. |
| Paging | limit (up to 500) and cursor = next_cursor from the previous page |
| Rate limit | Per key, per minute. Every response has RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset; over the limit you get 429 with Retry-After. |
| Caching | Responses carry an ETag. Send it back as If-None-Match and you get 304 Not Modified when nothing changed. |
| Errors | Real HTTP status codes and a JSON body (application/problem+json) whose detail says what to fix. See error codes. |
| Versioning | Every path starts with /v1. Fields may be added within v1; anything that breaks existing clients ships as /v2, announced in advance. |
| Status | /v1/status (no key needed) shows record counts and when data last changed. |
Endpoints
| Request | Returns |
|---|---|
GET /conferences | Conferences, with filters year, start_date_from, start_date_to, country, therapy_area, q, updated_since |
GET /conferences/{id} | One conference, with its tags and organizations |
GET /journals, /journals/{id} | Journals (filters q, updated_since) |
GET /{dataset}/changes?since=<token> | Records added, changed or removed since a sync token |
GET /exports/{dataset} | The full dataset as gzipped JSON Lines, or ?format=csv for one flat table |
GET /reference/therapy-areas | Therapy areas in your data, with counts |
GET /reference/tags?dataset=…, /reference/organizations?dataset=… | Tags and organizations in your data, with counts |
Date confidence
Next year's deadlines are often unannounced when you need to plan, so conference dates carry a status: start_date_status, abstract_due_date_status and late_breaking_due_date_status.
| Status | Meaning |
|---|---|
confirmed | Published by the organizer and checked against the official source |
estimated | Projected from the lead times of the meeting's earlier editions, until the organizer announces it |
copied | Carried forward from the previous edition and waiting for confirmation |
not_found | Looked for, not published yet |
check | Under review by our team |
Support
Every response has an X-Request-Id header (errors also include request_id in the body). Quote it when you contact us and we can find the exact request.