REFERENCE
List medicines
GET/v1/medicines
One page of medicines, in the order of their permanent number. Page through to the end to copy the whole database, or pass updated_since to get only what changed.
Requestcurl
curl -G https://api.oushodh.dev/v1/medicines \ -d limit=1 \ -H "Authorization: Bearer $OUSHODH_KEY"
Query parameters
All optional.
| NAME | TYPE | WHAT IT DOES |
|---|---|---|
limit | integer | Medicines on one page. 1 to 500. Default 100. |
cursor | string | The next value from the page before. Leave it out for the first page. |
updated_since | time | Only medicines changed at or after this time, oldest change first. Written like 2026-11-08T09:30:00Z. |
q | string | Only medicines whose brand, generic or manufacturer starts with these words, or whose ID matches. |
- Medicines on one page. 1 to 500. Default 100.
limitinteger - The
cursorstringnextvalue from the page before. Leave it out for the first page. - Only medicines changed at or after this time, oldest change first. Written like
updated_sincetime2026-11-08T09:30:00Z. - Only medicines whose brand, generic or manufacturer starts with these words, or whose ID matches.
qstring
Response
A page of medicines.
| FIELD | TYPE | WHAT IT HOLDS |
|---|---|---|
items | list | The medicines on this page. Each is a medicine object; a value no source gives is null. |
next | string or null | Pass it back as cursor for the next page. null on the last page. |
total | integer | How many medicines match, across all pages. |
- The medicines on this page. Each is a medicine object; a value no source gives is
itemslistnull. - Pass it back as
nextstring or nullcursorfor the next page.nullon the last page. - How many medicines match, across all pages.
totalinteger
Response200
{
"items": [
{
"id": "MED-000001",
"uuid": "01a1ba6f-f14b-7664-91f1-794f6db31599",
"brand": "Blast",
"product_name": "Blast 12.5 mg/5 ml Oral Solution",
"strength": "12.5 mg/5 ml",
"generic_name": "Bilastine",
"dosage_form": "Oral Solution",
"manufacturer": "General Pharmaceuticals Ltd.",
"price": 140.0,
"price_per": "unit",
"last_updated": "2026-11-08T09:14:20Z",
…
}
],
"next": "733a31",
"total": 58937
}Errors
Each error has a code and a message.
| STATUS | CODE | WHEN |
|---|---|---|
400 | bad_request | A bad parameter, such as limit=0, a time in another form, or a missing q. |
401 | unauthorized | No key, an unknown key or a revoked key. The answer never says which. |
403 | plan_expired | The key's account has no active plan. |
429 | rate_limited | More requests in a minute than the key's plan allows. |
429 | quota_exceeded | The plan's requests for this month are used up. |
500 | internal | A fault on our side. The details go to our log, not the answer. |
400 bad_requestA bad parameter, such aslimit=0, a time in another form, or a missingq.401 unauthorizedNo key, an unknown key or a revoked key. The answer never says which.403 plan_expiredThe key's account has no active plan.429 rate_limitedMore requests in a minute than the key's plan allows.429 quota_exceededThe plan's requests for this month are used up.500 internalA fault on our side. The details go to our log, not the answer.
Medicines are never deleted and IDs are never reused. Store each medicine's uuid as the key that never changes, and show its id to people.