Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/medplum-fhir-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Medplum - OpenAPI 3.0 Fhir API
description: Medplum OpenAPI 3.0 specification. Learn more about Medplum at [https://www.medplum.com](https://www.medplum.com).
termsOfService: https://www.medplum.com/terms
contact:
email: hello@medplum.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.5
servers:
- url: https://api.medplum.com/
security:
- BasicAuth: []
BearerAuth: []
OpenID: []
tags:
- name: Fhir
paths:
/fhir/R4/{resourceType}:
get:
summary: Search
description: Search
operationId: search
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/Bundle'
tags:
- Fhir
post:
summary: Create Resource
description: Create Resource
operationId: createResource
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
requestBody:
description: Create Resource
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/ResourceList'
required: true
responses:
'201':
description: Success
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/ResourceList'
tags:
- Fhir
/fhir/R4/{resourceType}/{id}:
get:
summary: Read Resource
description: Read Resource
operationId: readResource
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
- name: id
in: path
description: Resource ID
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Success
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/ResourceList'
tags:
- Fhir
put:
summary: Update Resource
description: Update Resource
operationId: updateResource
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
- name: id
in: path
description: Resource ID
required: true
schema:
type: string
format: uuid
requestBody:
description: Update Resource
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/ResourceList'
required: true
responses:
'200':
description: Success
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/ResourceList'
tags:
- Fhir
delete:
summary: Delete Resource
description: Delete Resource
operationId: deleteResource
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
- name: id
in: path
description: Resource ID
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Success
tags:
- Fhir
patch:
summary: Patch Resource
description: Patch Resource
operationId: patchResource
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
- name: id
in: path
description: Resource ID
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Success
tags:
- Fhir
/fhir/R4/{resourceType}/{id}/_history:
get:
summary: Read Resource History
description: Read Resource History
operationId: readResourceHistory
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
- name: id
in: path
description: Resource ID
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Success
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/Bundle'
tags:
- Fhir
/fhir/R4/{resourceType}/{id}/_history/{versionId}:
get:
summary: Read Version
description: Read Version
operationId: readVersion
parameters:
- name: resourceType
in: path
description: Resource Type
required: true
schema:
type: string
- name: id
in: path
description: Resource ID
required: true
schema:
type: string
format: uuid
- name: versionId
in: path
description: Version ID
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Success
content:
application/fhir+json:
schema:
$ref: '#/components/schemas/ResourceList'
tags:
- Fhir
components:
schemas:
MedicinalProductPackaged:
description: A medicinal product in a container or package.
properties:
resourceType:
description: This is a MedicinalProductPackaged resource
type: string
id:
description: The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.
$ref: '#/components/schemas/id'
meta:
description: The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.
$ref: '#/components/schemas/Meta'
implicitRules:
description: A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.
$ref: '#/components/schemas/uri'
language:
description: The base language in which the resource is written.
$ref: '#/components/schemas/code'
text:
description: A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.
$ref: '#/components/schemas/Narrative'
contained:
description: These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.
items:
$ref: '#/components/schemas/ResourceList'
type: array
extension:
description: May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
identifier:
description: Unique identifier.
items:
$ref: '#/components/schemas/Identifier'
type: array
subject:
description: The product with this is a pack for.
items:
$ref: '#/components/schemas/Reference'
type: array
description:
description: Textual description.
$ref: '#/components/schemas/string'
legalStatusOfSupply:
description: The legal status of supply of the medicinal product as classified by the regulator.
$ref: '#/components/schemas/CodeableConcept'
marketingStatus:
description: Marketing information.
items:
$ref: '#/components/schemas/MarketingStatus'
type: array
marketingAuthorization:
description: Manufacturer of this Package Item.
$ref: '#/components/schemas/Reference'
manufacturer:
description: Manufacturer of this Package Item.
items:
$ref: '#/components/schemas/Reference'
type: array
batchIdentifier:
description: Batch numbering.
items:
$ref: '#/components/schemas/MedicinalProductPackaged_BatchIdentifier'
type: array
packageItem:
description: A packaging item, as a contained for medicine, possibly with other packaging items within.
items:
$ref: '#/components/schemas/MedicinalProductPackaged_PackageItem'
type: array
additionalProperties: false
required:
- packageItem
- resourceType
uri:
pattern: ^\S*$
type: string
description: String of characters used to identify a name or a resource
Subscription_Channel:
description: The subscription resource is used to define a push-based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined "channel" so that another system can take an appropriate action.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
type:
description: The type of channel to send notifications on.
enum:
- rest-hook
- websocket
- email
- sms
- message
endpoint:
description: The url that describes the actual end-point to send messages to.
$ref: '#/components/schemas/url'
payload:
description: The mime type to send the payload in - either application/fhir+xml, or application/fhir+json. If the payload is not present, then there is no payload in the notification, just a notification. The mime type "text/plain" may also be used for Email and SMS subscriptions.
$ref: '#/components/schemas/code'
header:
description: Additional headers / information to send as part of the notification.
items:
$ref: '#/components/schemas/string'
type: array
additionalProperties: false
SupplyDelivery_SuppliedItem:
description: Record of delivery of what is supplied.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
quantity:
description: The amount of supply that has been dispensed. Includes unit of measure.
$ref: '#/components/schemas/Quantity'
itemCodeableConcept:
description: Identifies the medication, substance or device being dispensed. This is either a link to a resource representing the details of the item or a code that identifies the item from a known list.
$ref: '#/components/schemas/CodeableConcept'
itemReference:
description: Identifies the medication, substance or device being dispensed. This is either a link to a resource representing the details of the item or a code that identifies the item from a known list.
$ref: '#/components/schemas/Reference'
additionalProperties: false
ElementDefinition_Base:
description: Captures constraints on each element within the resource, profile, or extension.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
path:
description: The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base.
$ref: '#/components/schemas/string'
min:
description: Minimum cardinality of the base element identified by the path.
$ref: '#/components/schemas/unsignedInt'
max:
description: Maximum cardinality of the base element identified by the path.
$ref: '#/components/schemas/string'
additionalProperties: false
MedicinalProductPackaged_BatchIdentifier:
description: A medicinal product in a container or package.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
outerPackaging:
description: A number appearing on the outer packaging of a specific batch.
$ref: '#/components/schemas/Identifier'
immediatePackaging:
description: A number appearing on the immediate packaging (and not the outer packaging).
$ref: '#/components/schemas/Identifier'
additionalProperties: false
required:
- outerPackaging
ImplementationGuide_Definition:
description: A set of rules of how a particular interoperability or standards problem is solved - typically through the use of FHIR resources. This resource is used to gather all the parts of an implementation guide into a logical whole and to publish a computable definition of all the parts.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
grouping:
description: A logical group of resources. Logical groups can be used when building pages.
items:
$ref: '#/components/schemas/ImplementationGuide_Grouping'
type: array
resource:
description: A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.
items:
$ref: '#/components/schemas/ImplementationGuide_Resource'
type: array
page:
description: A page / section in the implementation guide. The root page is the implementation guide home page.
$ref: '#/components/schemas/ImplementationGuide_Page'
parameter:
description: Defines how IG is built by tools.
items:
$ref: '#/components/schemas/ImplementationGuide_Parameter'
type: array
template:
description: A template for building resources.
items:
$ref: '#/components/schemas/ImplementationGuide_Template'
type: array
additionalProperties: false
required:
- resource
ProjectSetting:
description: Option or parameter that can be adjusted within the Medplum Project to customize its behavior.
properties:
name:
description: The secret name.
$ref: '#/components/schemas/string'
valueString:
description: The secret value.
$ref: '#/components/schemas/string'
valueBoolean:
description: The secret value.
$ref: '#/components/schemas/boolean'
valueDecimal:
description: The secret value.
$ref: '#/components/schemas/decimal'
valueInteger:
description: The secret value.
$ref: '#/components/schemas/integer'
additionalProperties: false
required:
- name
Ratio:
description: A relationship of two Quantity values - expressed as a numerator and a denominator.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
numerator:
description: The value of the numerator.
$ref: '#/components/schemas/Quantity'
denominator:
description: The value of the denominator.
$ref: '#/components/schemas/Quantity'
additionalProperties: false
Substance_Instance:
description: A homogeneous material with a definite composition.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
identifier:
description: Identifier associated with the package/container (usually a label affixed directly).
$ref: '#/components/schemas/Identifier'
expiry:
description: When the substance is no longer valid to use. For some substances, a single arbitrary date is used for expiry.
$ref: '#/components/schemas/dateTime'
quantity:
description: The amount of the substance.
$ref: '#/components/schemas/Quantity'
additionalProperties: false
Coverage_Class:
description: Financial instrument which may be used to reimburse or pay for health care products and services. Includes both insurance and self-payment.
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
items:
$ref: '#/components/schemas/Extension'
type: array
type:
description: The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan.
$ref: '#/components/schemas/CodeableConcept'
value:
description: The alphanumeric string value associated with the insurer issued label.
$ref: '#/components/schemas/string'
name:
description: A short description for the class.
$ref: '#/components/schemas/string'
additionalProperties: false
required:
- type
ValueSet_Include:
description: A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [[[CodeSystem]]] definitions and their use in [coded elements](terminologies.html).
properties:
id:
description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
$ref: '#/components/schemas/string'
extension:
description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
items:
$ref: '#/components/schemas/Extension'
type: array
modifierExtension:
description: 'May be used to represent additional information that is not part of the basic definition of the elemen
# --- truncated at 32 KB (2907 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/medplum/refs/heads/main/openapi/medplum-fhir-api-openapi.yml