Skip to main content

AMRIT Pharmacy discovery

AMRIT Pharmacies are the discounted medicine stores run inside government hospitals by HLL Lifecare Limited. After this page you will know the five ways to search for one and every field that comes back.

Who does what

Three parties. Shared roles, signing and onboarding are on UHI services.

PartyWho runs itWhat it does here
EUAYou, or any PHR appSends the search. Receives the on_search. Renders the store list.
UHI GatewayNHAValidates and routes the search. Relays the on_search back to you.
HSPAHLL Lifecare LimitedQueries the AMRIT store database. Builds the on_search catalog.

You do not build a HSPA unless you are HLL or their technology partner.

Message flow

Two calls, asynchronous, discovery only. There is no ordering and no reservation. The HTTP 200 from the Gateway is a receipt. The store data arrives afterwards on your callback URL.

StepWho actsWhat happens
1Your systemYou build a search with your filters and POST it to the Gateway.
2GatewayReturns HTTP 200 ACK immediately. Forwards the search to the AMRIT HSPA.
3AMRIT HSPAQueries the store database against your filters.
4AMRIT HSPAPOSTs an on_search to the Gateway with a catalog of matching stores.
5GatewayPOSTs the on_search to your consumer_uri.
6Your systemACKs the on_search and renders the list.

Match a response to its request by context.transaction_id. Your consumer_uri must be a publicly reachable HTTPS endpoint.

Service identity

ParameterValueWhere it goes
domainnic2025:477201context.domain in every call
fulfillment.typeAMRITmessage.intent.fulfillment.type
item.descriptor.codeAMRIT_PHARMACYmessage.intent.item.descriptor.code
item.descriptor.nameAMRIT_PHARMACYmessage.intent.item.descriptor.name
Provider IDNot yet publishedIdentifies the AMRIT HSPA on the network
Provider URLNot yet publishedThe AMRIT HSPA endpoint registered with NHA
HSPA public key IDNot yet publishedThe Gateway uses it to verify AMRIT's response signature
Gateway base URL, sandboxhttps://uhigatewaysandbox.abdm.gov.in/api/v1/uhi/searchAppend /search or /on_search to the base path
Gateway base URL, productionhttps://uhigateway.abdm.gov.in/api/v1/uhi/searchAppend /search or /on_search to the base path

The last three are issued at onboarding. See Confirm at onboarding. Ask your contact for the registered values before you go to sandbox.

Search filters

No mandatory location filter. All five filter shapes are independent and they combine.

Search typeFields usedUse case
By pharmacy codecategory.descriptor.code, category.descriptor.nameLook up one store by its assigned code
By state and districtlocation.state.code, location.state.name, location.district.code, location.district.nameAll AMRIT stores in a district
By pincodeaddress.area_codeStores in a 6 digit pincode area
By GPS and radiuslocation.gps, location.radius.type, location.radius.value, location.radius.unitStores near the user
Combinedstate, district and address.area_code togetherNarrow to a sub area of a district

address sits beside location inside message.intent, not inside it.

Sample payloads

The context block is identical across all five variants. Only message.intent changes.

Search by pharmacy code

{
"context": {
"domain": "nic2025:477201",
"country": "IND",
"city": "std:011",
"action": "search",
"core_version": "0.7.1",
"consumer_id": "<YOUR_EUA_ID_FROM_NHA_ONBOARDING>",
"consumer_uri": "<YOUR_HTTPS_CALLBACK_URL>",
"message_id": "<FRESH_UUID_PER_CALL>",
"timestamp": "2026-06-09T18:24:35",
"transaction_id": "<FRESH_UUID_PER_SEARCH_SESSION>"
},
"message": {
"intent": {
"category": {
"descriptor": {
"code": "Pharmacy Code",
"name": "Pharmacy Code"
}
},
"fulfillment": {
"type": "AMRIT",
"start": { "time": { "timestamp": "2026-06-09T00:00:00" } },
"end": { "time": { "timestamp": "2026-06-09T23:59:59" } }
},
"item": {
"descriptor": { "code": "AMRIT_PHARMACY", "name": "AMRIT_PHARMACY" }
}
}
}
}

Two values are in circulation for category.descriptor: the literal string Pharmacy Code, and the pharmacy code value itself. Those are two different things. See Confirm at onboarding.

Search by state and district

{
"message": {
"intent": {
"fulfillment": {
"type": "AMRIT",
"start": { "time": { "timestamp": "2026-06-09T00:00:00" } },
"end": { "time": { "timestamp": "2026-06-09T23:59:59" } }
},
"item": {
"descriptor": { "code": "AMRIT_PHARMACY", "name": "AMRIT_PHARMACY" }
},
"location": {
"district": { "code": "466", "name": "Ahmednagar" },
"state": { "code": "27", "name": "Maharashtra" }
}
}
}
}

Search by pincode

{
"message": {
"intent": {
"fulfillment": {
"type": "AMRIT",
"start": { "time": { "timestamp": "2026-06-09T00:00:00" } },
"end": { "time": { "timestamp": "2026-06-09T23:59:59" } }
},
"item": {
"descriptor": { "code": "AMRIT_PHARMACY", "name": "AMRIT_PHARMACY" }
},
"address": { "area_code": "413736" }
}
}
}

Search by GPS and radius

{
"message": {
"intent": {
"fulfillment": {
"type": "AMRIT",
"start": { "time": { "timestamp": "2026-06-09T00:00:00" } },
"end": { "time": { "timestamp": "2026-06-09T23:59:59" } }
},
"item": {
"descriptor": { "code": "AMRIT_PHARMACY", "name": "AMRIT_PHARMACY" }
},
"location": {
"gps": "19.7126974,74.4833288",
"radius": { "type": "CONSTANT", "value": "5", "unit": "km" }
}
}
}
}

Combined filters

{
"message": {
"intent": {
"fulfillment": {
"type": "AMRIT",
"start": { "time": { "timestamp": "2026-06-09T00:00:00" } },
"end": { "time": { "timestamp": "2026-06-09T23:59:59" } }
},
"item": {
"descriptor": { "code": "AMRIT_PHARMACY", "name": "AMRIT_PHARMACY" }
},
"location": {
"district": { "code": "466", "name": "Ahmednagar" },
"state": { "code": "27", "name": "Maharashtra" }
},
"address": { "area_code": "413736" }
}
}
}

on_search response

Each providers[] entry is one AMRIT store. Three things here do not appear in other UHI services: the pharmacy type on the fulfillment, the store opening and closing times, and the HFR ID tag.

{
"context": {
"domain": "nic2025:477201",
"country": "IND",
"city": "std:011",
"action": "on_search",
"core_version": "0.7.1",
"consumer_id": "eua-nha",
"consumer_uri": "https://uhieuasandbox.abdm.gov.in/api/v1/euaService",
"provider_id": "amrit-hspa",
"provider_uri": "https://amritpharmacy.gov.in/api/v1/admin/store/",
"message_id": "e9a19230-f951-11ec-b135-53aea776f66b",
"timestamp": "2026-06-09T18:24:35",
"transaction_id": "e9a19230-f951-11ec-b135-53aea776f66b"
},
"message": {
"catalog": {
"descriptor": {
"name": "AMRIT PHARMACY SERVICE",
"images": "<AMRIT_PHARMACY_HSPA_LOGO_URL>",
"short_desc": "<HSPA_SHORT_DESCRIPTION_SET_BY_HLL>",
"long_desc": "<HSPA_LONG_DESCRIPTION_SET_BY_HLL>"
},
"providers": [
{
"id": "AMRITST01460",
"descriptor": {
"name": "ESIS NAGPUR",
"code": "",
"symbol": "",
"short_desc": "AMRIT - ESIS NAGPUR",
"long_desc": ""
},
"fulfillments": [
{
"id": "0",
"type": "AMRIT",
"agent": { "name": "<CONTACT_PERSON_NAME>" },
"start": { "time": { "timestamp": "<STORE_OPENING_TIME>" } },
"end": { "time": { "timestamp": "<STORE_CLOSING_TIME>" } },
"tags": { "@abdm/gov.in/hfr_id": "<HFR_ID>" }
}
],
"location": {
"id": "1",
"descriptor": { "name": "ESIS NAGPUR" },
"city": { "name": "", "code": "" },
"district": { "name": "NAGPUR", "code": "466" },
"state": { "name": "Maharashtra", "code": "27" },
"country": { "name": "INDIA", "code": "+91" },
"gps": "19.7126974,74.4833288",
"address": "AMRIT PHARMACY, ESIS HOSPITAL, SOMWARI ROAD, OPP. NURSES HOSTEL, KRIDA CHOWK, SOMWARIPETH, NAGPUR, MAHARASHTRA - 440009",
"radius": { "type": "CONSTANT", "value": "12", "unit": "km" }
},
"contact": {
"phone": "<PHARMACY_CONTACT_NUMBER>",
"email": "<PHARMACY_CONTACT_EMAIL>"
}
}
]
}
}
}

The angle bracket values above are placeholders. No filled example is published for the store hours, the contact block or the HFR ID, and no timestamp format for opening and closing times. The two catalog.descriptor description fields hold descriptive prose in placeholders rather than real values, so they appear here that way too. The sample also carries a location.radius block that the field reference does not list.

Field reference

search: context

All fields are mandatory and identical across every variant.

FieldTypeValue
domainstringnic2025:477201, fixed
countrystringIND, fixed
citystringSTD code, for example std:011
actionstringsearch, fixed
core_versionstring0.7.1
consumer_idstringYour registered EUA identifier
consumer_uristringYour HTTPS callback URL
message_idUUIDFresh per call. Never reuse.
transaction_idUUIDFresh per search session. The on_search copies it.
timestampISO 8601Request time

search: message.intent

Field pathTypeMandatoryDescription
fulfillment.typestringYesAMRIT, fixed
fulfillment.start.time.timestampdatetimeYesStart of the search window
fulfillment.end.time.timestampdatetimeYesEnd of the search window
item.descriptor.codestringYesAMRIT_PHARMACY, fixed
item.descriptor.namestringYesAMRIT_PHARMACY, fixed
category.descriptor.codestringConditionalSet when searching by pharmacy code
category.descriptor.namestringConditionalSet when searching by pharmacy code
location.state.namestringNoState name, for example Maharashtra
location.state.codestringNoNumeric state code, for example 27
location.district.namestringNoDistrict name, for example Ahmednagar
location.district.codestringNoNumeric district code, for example 466
location.gpsstringNolat,long, for example 19.7126974,74.4833288
location.radius.typestringNoCONSTANT. Required with a GPS search.
location.radius.valuestring or floatNoRadius in km
location.radius.unitstringNokm
address.area_codestringNo6 digit pincode

on_search: provider records

Field pathTypeDescription
catalog.providers[].idstringAMRIT store code, for example AMRITST01460
catalog.providers[].descriptor.namestringName of the hospital that hosts the store
catalog.providers[].descriptor.codestringEmpty. Reserved for future use.
catalog.providers[].descriptor.symbolstringEmpty. Reserved for future use.
catalog.providers[].descriptor.short_descstringPharmacy label, for example AMRIT - ESIS NAGPUR
catalog.providers[].descriptor.long_descstringMay be empty
catalog.providers[].fulfillments[].typestringPharmacy type. One of AMRIT, AMRIT_OPTICALS, HLL_PNS, AMRIT_DEENDAYAL.
catalog.providers[].fulfillments[].agent.namestringContact person at the store
catalog.providers[].fulfillments[].start.time.timestampdatetimeStore opening time
catalog.providers[].fulfillments[].end.time.timestampdatetimeStore closing time
catalog.providers[].fulfillments[].tags["@abdm/gov.in/hfr_id"]stringHealth Facility Registry identifier for the store
catalog.providers[].location.gpsstringlat,long of the store
catalog.providers[].location.addressstringFull street address
catalog.providers[].location.city.namestringMay be empty
catalog.providers[].location.city.codestringMay be empty
catalog.providers[].location.district.namestringDistrict name
catalog.providers[].location.district.codestringDistrict code
catalog.providers[].location.state.namestringState name
catalog.providers[].location.state.codestringState code
catalog.providers[].location.country.namestringINDIA, fixed
catalog.providers[].location.country.codestring+91, fixed
catalog.providers[].contact.phonestringStore phone number
catalog.providers[].contact.emailstringMay be empty

Note that fulfillments[].type carries the pharmacy type here. In Jan Aushadhi Kendra discovery the same field carries the literal value contact. Do not reuse a parser across the two services without checking this field.

Confirm at onboarding

Three values are issued when you onboard. Build the flow and hold these until you have them.

  • Your registered provider ID, provider URL and HSPA public key ID. Responses carry amrit-hspa at https://amritpharmacy.gov.in/api/v1/admin/store/. The public key ID is issued to you directly.
  • What goes in category.descriptor for a pharmacy code search. Both the literal string Pharmacy Code and the pharmacy code value are in circulation. Confirm which the HSPA accepts.
  • The format of store opening and closing times. No format is published, so read the values back from your first live response rather than parsing to a fixed pattern.

Next