harmony Data API developer docs

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

  1. Get a key. Orbytel Group issues it with your license; it starts with odk_live_. Keep it secret, like a password.
  2. Make a request. Send the key in the Authorization header:
    curl https://api.orbytelgroup.com/v1/conferences?year=2027&therapy_area=Oncology&limit=5 \
      -H "Authorization: Bearer $ORBYTEL_KEY"
  3. Read the response. Records are in data; if has_more is true, pass next_cursor as cursor to get the next page.

The basics

Base URLhttps://api.orbytelgroup.com/v1 (HTTPS only)
AuthenticationAuthorization: Bearer <key>, or X-API-Key: <key> for tools that can't set Authorization
Datasetsconferences and journals; your license decides which, and for conferences which therapy areas, countries and years
FormatJSON, UTF-8. Dates YYYY-MM-DD; timestamps UTC ISO 8601. Empty values are null.
Paginglimit (up to 500) and cursor = next_cursor from the previous page
Rate limitPer key, per minute. Every response has RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset; over the limit you get 429 with Retry-After.
CachingResponses carry an ETag. Send it back as If-None-Match and you get 304 Not Modified when nothing changed.
ErrorsReal HTTP status codes and a JSON body (application/problem+json) whose detail says what to fix. See error codes.
VersioningEvery 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

RequestReturns
GET /conferencesConferences, 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-areasTherapy 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.

StatusMeaning
confirmedPublished by the organizer and checked against the official source
estimatedProjected from the lead times of the meeting's earlier editions, until the organizer announces it
copiedCarried forward from the previous edition and waiting for confirmation
not_foundLooked for, not published yet
checkUnder 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.