A Developer's Guide to API Terminology

When you’re first digging into an API, the documentation can feel like a foreign language. The jargon-endpoints, requests, responses-forms the basic vocabulary you need to make different software systems actually talk to each other. Getting this language right is the foundation for building any modern application.
The Core Language of APIs Every Developer Must Know
At its heart, an Application Programming Interface (API) is simply a messenger. It takes a request from your application, tells another system what you want it to do, and then brings the response back. This is the critical communication layer that lets completely separate pieces of software interact and exchange data, from your phone's weather app to the most complex enterprise systems.

While they feel like a modern invention, the core ideas behind APIs go back to the 1950s and were formally described in a 1974 academic paper. Fast forward to today, and their importance is impossible to overstate-APIs are now responsible for an estimated 83% of all web traffic.
In specialized fields like healthcare, they are indispensable for standardizing vocabularies across more than 90% of Electronic Health Records (EHRs). This is where services like OMOPHub become vital, providing the tools for data mapping and compliance.
Understanding the Essential Components
Before you can make your first successful API call, you need a solid grasp of the universal building blocks. These terms are the bread and butter of almost any API interaction you’ll ever have.
- Endpoint: This is the specific URL where an API resource lives. Think of it as the address you send your requests to. Each endpoint usually maps to a specific function or a set of data.
- Request: This is the structured message your application sends to an endpoint. It contains everything the server needs to know to fulfill your action, including what you want to do and any data required to do it.
- Response: After the server processes your request, it sends back a response. This package contains the data you asked for (or an error message) and, crucially, a status code that tells you if the request was successful.
- HTTP Methods: These are the verbs of your API request, defining the specific action you intend to perform. The most common are
GETfor retrieving data andPOSTfor creating new data.
Pro Tip: To really understand healthcare-specific API terms like 'Concepts' and 'Domains,' it helps to use a hands-on tool. The OMOPHub Concept Lookup allows you to explore standardized medical vocabularies interactively, turning abstract definitions into tangible data. For a deeper look at how these systems manage such complex information, check out our guide on terminology servers.
Dissecting API Requests and Responses
At its core, working with any API boils down to two fundamental actions: crafting a request and then correctly interpreting the server’s response. Think of it as a tightly structured dialogue between your application and the API server. Getting this back-and-forth right is the key to building anything that actually works.

Every interaction is governed by specific api terminology. The request isn't just a casual question; it's a precise package of information that tells the server exactly what you need it to do.
The Anatomy of an API Request
An API request is made up of a few distinct parts that you'll assemble for every call. If any piece is wrong or missing, the whole thing fails, so it pays to know what each one does.
- Endpoint: This is just the URL you’re sending your request to. It points to the specific resource or function you want to interact with. For instance, in the OMOPHub API, an endpoint like
/concepts/{concept_id}is how you target a single medical concept. - HTTP Method (or Verb): This tells the server what kind of action you want to take. The main ones you’ll see constantly are
GETto retrieve data,POSTto create something new,PUTto update what's already there, andDELETEto get rid of it. - Headers: This is where you put metadata about the request itself. It’s the spot for things like authentication credentials (your API key goes here), the format of the data you’re sending (
Content-Type), and the data format you want back (Accept). - Payload (or Body): When you're using
POSTorPUTto send data to the server, that data goes in the payload. It’s almost always structured as JSON and contains all the information the server needs to create or modify a resource.
So, if you wanted to search for a concept using the OMOPHub API, you'd send a GET request to the /concepts/ endpoint. You'd pass your search term as a parameter, but there would be no payload because you're just fetching information, not sending new data.
Interpreting the API Response
Now, on the flip side is the response. After the server handles your request, it sends back a response that contains much more than just the data you asked for. It’s your primary source of feedback on whether your request succeeded or failed.
A seasoned developer knows that a well-designed API response always provides a Status Code. This three-digit number is the quickest way to know if your call was a success, a failure, or something in between. Learning the common codes will save you countless hours of debugging.
A typical response package contains:
- Status Code: A numerical code that tells you the outcome. You’ll quickly become familiar with 200 OK (success) and 404 Not Found (the resource doesn't exist).
- Headers: Just like request headers, these contain metadata, but this time it’s about the response itself.
- Body (or Payload): If the request was successful, this is where you'll find the data you asked for, usually in JSON. If something went wrong, the body will often contain a helpful error message explaining the problem.
Actionable Tip: When you hit a bug, the first thing you should always check is the response status code. A 401 Unauthorized error almost certainly means an issue with your API key. A 400 Bad Request points to a problem with your payload, like a typo or incorrect data structure. You can double-check code examples and response formats against the official OMOPHub LLM documentation. To get your hands dirty, the official SDKs for Python and R are the best place to start.
API Security and Authentication Terms Explained
When you're working with APIs, especially in a field like healthcare, security isn't just a feature; it's a foundational requirement. You absolutely have to get it right. Understanding the specific api terminology for security is the first step to protecting your endpoints from unauthorized access and keeping your operations compliant with strict regulations like HIPAA and GDPR.
At the heart of API security are two distinct but related concepts: authentication and authorization. Authentication is all about verifying identity-proving who you are. Authorization, on the other hand, deals with permissions-determining what you’re allowed to do once your identity is confirmed. A breakdown in either of these can expose sensitive data.
Core Authentication and Authorization Concepts
The most common approach to securing an API involves some form of credential that your application must present with each request. Each type of credential plays a specific role in the overall security process.
- API Key: This is the simplest form of authentication. It’s just a unique string of characters that identifies your application. Think of it as a basic library card-it gets you in the door, but it doesn't grant you special privileges. API keys are typically sent in an HTTP header and are best suited for accessing public or low-sensitivity data.
- OAuth 2.0: This isn't a simple protocol but a full authorization framework. It's the industry standard that allows an application to gain limited, controlled access to a user's account on another service without ever handling their password. If you’ve ever seen a "Log in with Google" button, you’ve seen OAuth 2.0 in action.
- Bearer Token: This is a specific type of access token, commonly generated during an OAuth 2.0 flow. The name "bearer" is key here-it means that whoever possesses the token is granted access, no questions asked. This makes protecting these tokens absolutely critical.
When you're implementing an OAuth 2.0 flow, you'll work with two other key identifiers that belong to your application itself. You use these to kick off the process of getting a Bearer Token.
- Client ID: A public identifier for your app. It’s not a secret and is used to identify your application to the authorization server, often appearing in URLs.
- Client Secret: This one is, as the name implies, a secret. It’s a confidential key known only by your application and the authorization server, used to prove your application's identity when it trades an authorization code for an access token.
For a deeper dive into how these methods are implemented, you can always consult this API authentication documentation.
Essential Security Practices and Terminology
A truly secure system goes beyond just handling credentials correctly. You need to build in practices that protect the API from bad actors and ensure the integrity of the data passing through it.
Security Tip: Never, ever expose your API keys or client secrets in client-side code. Anything running in a user's browser, like JavaScript, can be inspected. Always keep these credentials on a secure server. For OMOPHub, you can generate and manage your keys right from the dashboard.
Here are a few more security practices you need to be familiar with:
- Rate Limiting: This is a simple but powerful defense. It's a mechanism for controlling how many requests a single user or application can make within a set time period. It's your first line of defense against denial-of-service (DoS) attacks and prevents any single user from hogging all the resources.
- End-to-End Encryption (E2EE): This practice guarantees that data is encrypted on the sender's system and can only be decrypted by the intended recipient. No one in the middle-not even the API provider-can read the data.
- Audit Trails: An immutable, time-stamped log of every action taken through the API. This is non-negotiable for compliance. OMOPHub, for instance, maintains a seven-year audit trail, which is essential for demonstrating compliance with regulations like GDPR and HIPAA long after the fact.
Navigating Healthcare Vocabularies with OMOP
Once you move past general API concepts and into the world of healthcare data, you’ll find a whole new language to learn. The OMOP Common Data Model (CDM) is the Rosetta Stone for this domain, providing a standardized structure for incredibly complex medical information. For developers using an API like OMOPHub, these OMOP terms aren't just abstract ideas-they are the very resources and endpoints you'll be working with every day.
At its core, OMOP is built on standardized vocabularies. These aren't just simple dictionaries; they are meticulously organized classification systems that give clinical data its meaning and context.
From Database Concepts to API Resources
The OMOP model organizes data around a handful of fundamental ideas. While these terms might sound like they belong in a database schema, they translate directly into the API resources you can query and manipulate. Getting a firm grip on them is the first step to building anything meaningful.
- Vocabulary: Think of this as a specific terminology set, like SNOMED CT for clinical findings or LOINC for lab tests. Through the API, you can list available vocabularies and pull their metadata to understand their scope and version.
- Concept: This is your most granular unit of information. It represents a single medical idea-a diagnosis, a drug, a measurement. Every code from every vocabulary is treated as a concept, each with a unique, persistent ID.
- Domain: This is a high-level classification that groups concepts into practical categories like 'Condition', 'Drug', or 'Procedure'. Domains are incredibly useful for filtering your queries and making sense of the data you get back.
- Relationship: This is what connects concepts to each other. A relationship can tell you that one concept 'Is a' subtype of another (e.g., "Type 2 diabetes" is a "Diabetes mellitus") or that it 'Maps to' an equivalent concept in a different vocabulary. This is where the real power of OMOP lies, as it allows you to traverse these connections programmatically.
Of course, before you can start querying for concepts and tracing their relationships, you need secure access to the API itself.

As the diagram shows, a secure API call isn't a single step. It’s a multi-stage verification process that starts with your secret API key and results in a validated request using a short-lived bearer token.
Putting Vocabulary Knowledge into Practice
Understanding this terminology is what separates basic data retrieval from sophisticated analysis. You're no longer just fetching a code; you're using the API to discover its clinical meaning, find related concepts, and even map it across different coding systems-a cornerstone of data harmonization.
For instance, a researcher could write a script to find all 'Concepts' in the 'Condition' domain that have a 'Relationship' to type 2 diabetes. This is how you build the precise patient cohorts needed for robust analysis. You can explore these connections yourself with the interactive OMOPHub Concept Lookup tool.
Pro Tip: When you're tracing concept connections, pay close attention to the
relationship_id. The 'Is a' relationship is your key to building hierarchies, while 'Maps to' is essential for cross-vocabulary mapping. Both are critical for building effective data pipelines. The OMOPHub documentation has some excellent, copy-paste-ready examples for these exact use cases.
Knowing how to navigate and leverage this structured health information is a real-world, core competency for any health data developer. If you want to dig deeper into how this information is physically stored and managed, check out our deep dive on the OMOP data model in our related article.
Practical API Interaction with Code Examples
Alright, let's move past the theory and see how this works in practice. Knowing the terminology is one thing, but getting your hands dirty with actual code is where you really start to build confidence. We'll use the OMOPHub API to walk through some of the most common developer tasks, like searching for a concept and then pulling its specific details.
The following examples show how to get started using cURL for quick tests directly from your command line. After that, we’ll see how the official OMOPHub SDKs make the same process much smoother. Each example breaks down the request and the resulting response, so you know exactly what’s being sent and what you’re getting back. All code is validated against the official OMOPHub API documentation.
Example 1: Searching for a Concept with cURL
One of the first things you'll do with any data-centric API is perform a search. In this case, we'll look for the concept "Type 2 diabetes" by making a GET request to the /concepts/ endpoint. The search term is passed as a query parameter in the URL.
Pay close attention to the -H flag. This is how we pass our API key inside the Authorization header, using the Bearer Token scheme for authentication.
curl -X GET "https://api.omophub.com/v1/concepts/?query=Type%202%20diabetes" \
-H "Authorization: Bearer YOUR_API_KEY"
Once the server gets the request, it returns a JSON object that includes a list of concepts matching our query.
// Response: A list of matching concepts
{
"count": 125,
"next": "https://api.omophub.com/v1/concepts/?query=Type%202%20diabetes&offset=20",
"previous": null,
"results": [
{
"concept_id": 201826,
"concept_name": "Type 2 diabetes mellitus",
"vocabulary_id": "SNOMED",
"concept_code": "44054006"
}
// ... more results
]
}
Notice the response includes pagination metadata like count and next. These are absolutely essential for managing large result sets that are too big to return in a single response. If you're doing a lot of these lookups, our deep dive into the SNOMED code lookup process offers some more advanced techniques.
Example 2: Using the OMOPHub Python SDK
While cURL is fantastic for quick checks and debugging, you’ll want to use a Software Development Kit (SDK) for any real application development. SDKs handle all the boilerplate HTTP request logic for you. Here’s the same search performed with the official OMOPHub Python SDK.
# Python SDK Example: Search for a concept
from omophub import OMOPHubClient
# Initialize the client with your API key
client = OMOPHubClient(api_key="YOUR_API_KEY")
# Perform the search
concepts = client.concepts.search(query="Type 2 diabetes")
# Print the name of the first result
print(concepts['results'][0]['concept_name'])
# Output: Type 2 diabetes mellitus
Pro Tip: Using an SDK frees you from worrying about things like URL encoding, formatting headers, and parsing JSON responses. It lets you focus purely on your application's logic. For data scientists and statisticians, the official OMOPHub R SDK offers the same level of convenience within the R environment.
Looking at how other services handle similar interactions can also be incredibly helpful. For instance, tutorials on tasks like integrating Stripe Checkout with Next.js demonstrate universal API patterns. The core loop of authenticating, sending a request, and processing a response is a fundamental skill that applies across countless different APIs.
OMOPHub Endpoint Quick Reference
To help you get started quickly, here is a quick-reference table summarizing the key OMOPHub API endpoints. Think of this as your cheat sheet for finding the right tool for the job.
| Endpoint Path | HTTP Method | Description | Example Use Case |
|---|---|---|---|
/v1/concepts/ | GET | Searches for concepts across all vocabularies. | Find the concept_id for "Hypertension". |
/v1/concepts/{id}/ | GET | Retrieves detailed information for a single concept. | Get all attributes for concept_id 201826. |
/v1/vocabularies/ | GET | Lists all available vocabularies (e.g., SNOMED, RxNorm). | Check which vocabularies are supported. |
/v1/cohorts/ | POST | Creates a new patient cohort definition. | Define a new cohort of patients over 65. |
/v1/cohorts/{id}/ | GET | Retrieves a specific cohort definition. | Review the criteria for an existing cohort. |
/v1/cohorts/{id}/ | DELETE | Deletes a previously defined cohort. | Remove an old or temporary cohort definition. |
This table covers the most common endpoints you'll interact with when building applications on top of OMOP data. For a full list of parameters and advanced options, always refer to the official API documentation.
Deciphering API Data Formats and Structures
At the end of the day, an API's value is the data it provides. To actually use that data, you first need to understand how it's structured and formatted. This means getting familiar with the common data formats used for web APIs, a critical piece of API terminology.

While you might still run into older APIs that use XML (eXtensible Markup Language), almost all modern REST APIs have moved to JSON (JavaScript Object Notation). Its lightweight nature and human-readable syntax have made it the de facto standard for exchanging data on the web.
JSON is built on a simple concept: key-value pairs. A "key" is just a string (like "concept_name"), and its "value" can be anything from a string or number to a boolean, or even another nested JSON structure.
Understanding JSON Structures
API responses, especially from a service like OMOPHub, are almost always delivered as JSON objects or arrays. Knowing how to parse and navigate these structures is a fundamental skill for any developer in this space.
- Objects: A collection of key-value pairs enclosed in curly braces
{}. Objects are perfect for representing a single record with multiple fields, such as a single medical concept with its ID, name, and vocabulary. - Arrays: An ordered list of values enclosed in square brackets
[]. You'll see arrays whenever an endpoint needs to return a list of items, like a set of search results.
Here’s a typical example from the OMOPHub API. It shows a JSON object that contains an array named "results":
{
"count": 1,
"next": null,
"results": [
{
"concept_id": 201826,
"concept_name": "Type 2 diabetes mellitus",
"vocabulary_id": "SNOMED",
"concept_code": "44054006"
}
]
}
To grab the concept name from this response in Python, you'd access the nested data like this: response['results'][0]['concept_name']. The [0] is key here, as it selects the first item inside the results array.
Managing Large Datasets with Pagination
It’s rare for an API to send back thousands of records in a single request-that would be incredibly slow and resource-intensive. Instead, they use Pagination, which is a system for breaking up huge result sets into smaller, more manageable "pages" of data.
Pagination is your best friend when working with large-scale data. Always check the API documentation for pagination parameters to ensure your application can handle more than just the first page of results.
You typically control pagination by passing specific URL parameters with your request:
limit: Specifies the maximum number of items you want back on each page.offset: Tells the server how many items to skip before starting the list, which is how you get to the next page, the one after that, and so on.
Tip: A great way to get a feel for this is to use the OMOPHub Python SDK or R SDK to make a few requests and just print the entire JSON response. This lets you see the raw structure and practice navigating it. For more detailed examples, dive into the OMOPHub documentation or play around with the Concept Lookup tool.
Advanced API Concepts for Scalable Architecture
Once you move past making simple API calls, you start running into the real challenges of building production-grade software. It’s not just about getting data back and forth; it's about designing a system that can handle growth, stay responsive under pressure, and evolve without breaking. This is where you need to understand the architectural patterns that govern modern APIs.
The conversation almost always starts with REST (Representational State Transfer). Think of it less as a strict protocol and more as a set of architectural principles for the web. The key takeaway is that REST APIs are stateless-every single request from your application has to contain all the information the server needs to fulfill it. The server doesn't hold onto session history between requests, which is a design choice that drastically simplifies scaling.
Pillars of Scalable Design
Beyond the core style of REST, a few other concepts are crucial for building applications that are efficient and easy to maintain. These terms describe how systems talk to each other, how they change over time, and how they perform when things get busy.
- Webhook: Instead of your application constantly asking an API for new data (a process called polling), a webhook flips that model around. It's a "reverse API" where the server sends an automated message to your application the instant a specific event occurs. This event-driven pattern is far more efficient.
- SDK (Software Development Kit): An SDK is your best friend when integrating with a complex API. It’s a package of tools and pre-written code that handles the low-level work of constructing HTTP requests and parsing responses. Using an official OMOPHub Python SDK or R SDK means you can work with familiar functions instead of raw API calls.
- API Versioning: APIs are never truly finished; they have to evolve. Versioning is the practice of creating distinct versions (like
/v1/and/v2/) so you can introduce breaking changes without crippling applications that rely on older functionality. It provides a clear upgrade path and ensures backward compatibility.
Performance and Asynchronous Communication
In a production system, performance isn't a feature; it's a requirement. Concepts like latency and asynchronous patterns like webhooks are what separate a sluggish application from one that feels instantaneous to the user.
A core metric you'll always hear about is Latency-the total round-trip time for a request to travel from the client, get processed by the server, and return. High-performance services like OMOPHub obsess over this, achieving consistently low latency, often under 50ms, by using a globally distributed network and smart caching.
Webhooks are a perfect example of designing for performance. Think about the difference between your app constantly asking, "Is that long-running job done yet?" versus the server simply telling your app, "Hey, that job you asked for is complete." The second approach (using a webhook) eliminates a ton of useless network chatter and frees up your application's resources.
Actionable Tip: When evaluating an API, the first things you should look for are webhooks and an official SDK. If an API provides webhooks for important events, use them. It will make your application significantly more performant and scalable. Similarly, an SDK will cut your development time and help you sidestep common integration errors. You can find excellent code examples for these concepts in the OMOPHub LLM documentation and look up specific OMOP terms with the Concept Lookup tool.
Troubleshooting Common API Errors and Pitfalls
Sooner or later, you're going to hit an API error. It happens to everyone, from first-time coders to seasoned developers. Think of these errors not as roadblocks, but as the API's way of telling you exactly what needs to be fixed. This section breaks down the most common issues you'll run into with any API, including OMOPHub.
The first clue you'll get is an HTTP status code. These three-digit numbers are the foundation of API debugging, and understanding what they mean is the fastest way to solve a problem.
Decoding Common HTTP Error Codes
While dozens of status codes exist, you'll see a handful of them over and over. Here’s a practical guide to the most frequent offenders:
-
401 Unauthorized: The server has no idea who you are. This almost always points to a problem with your API key. Check that you’ve correctly included your bearer token in theAuthorizationheader. A simple copy-paste error is often the culprit. -
403 Forbidden: This is more nuanced than a 401. Here, the server knows who you are but has determined you lack the necessary permissions for that specific resource. Your API key might be valid, but it might not have the right privileges for the endpoint you're calling. -
404 Not Found: This one is straightforward-the URL you requested doesn't exist. Double-check the endpoint path for typos. It's an easy mistake to make.
Another common hurdle is the 400 Bad Request. This error is the API's way of saying it couldn't understand your request, usually because the request body is malformed. You might have a typo in a JSON key, an incorrect data type, or a missing required field, so a careful review of your payload is the next logical step.
Pro Tip: Keep the official API documentation open. For OMOPHub, the LLMs Full documentation is the definitive source for verifying endpoint paths, required parameters, and expected response structures. It's the best tool for sanity-checking your requests.
If you're still running into trouble, especially when you're just getting started, consider using the official SDKs. Both the OMOPHub Python SDK and the R SDK can significantly cut down on manual errors by handling the low-level request formatting for you. And to get a better feel for the data itself, you can always explore concepts interactively with the OMOPHub Concept Lookup tool.
Frequently Asked Questions about API Terminology
Let's tackle a few common questions that come up when developers start working with APIs, particularly in a specialized data environment like OMOPHub. Getting these core concepts straight from the beginning can save you a lot of headaches down the road.
A frequent point of confusion is the difference between an API and an SDK. Think of an API (Application Programming Interface) as the contract-it's the documented set of rules that defines how your application can request information from another system. An SDK (Software Development Kit), on the other hand, is your toolkit. It's a pre-packaged set of code that makes using that API much simpler.
Instead of manually constructing raw HTTP requests, you can just use a function from an SDK like our OMOPHub Python SDK or the R SDK. It handles the messy parts for you, letting you work with the API in a way that feels native to your chosen language.
When to Use a REST API
You'll see the term REST everywhere. It’s an architectural style, not a rigid protocol, that has become the de facto standard for modern APIs because it's flexible and scalable. REST APIs use the standard HTTP methods you're likely already familiar with (GET, POST, PUT, DELETE) and typically communicate using JSON, which is lightweight and easy for almost any language to parse.
This stateless approach is perfect for web and mobile applications where you need a reliable way to interact with resources over the web without maintaining a constant connection.
How to Securely Store API Keys
This is one area you absolutely cannot afford to get wrong. Your API keys are credentials, and they must be protected. You should never embed an API key in client-side code (like in your browser's JavaScript) or, even worse, commit it to a public Git repository.
Critical Tip: The only truly secure way to handle API keys is to store them as environment variables on your server. This practice isolates your keys from your codebase, preventing accidental exposure and allowing you to use different keys for your development, staging, and production environments without changing a single line of code.
For a deeper dive into request formats and security best practices, the official OMOPHub API documentation is your source of truth. If you need to explore specific medical terms and concepts, the OMOPHub Concept Lookup tool is an invaluable resource.
Ready to build faster without managing complex database infrastructure? Get started with OMOPHub and make your first API call in minutes. Explore our plans and generate your free API key at https://omophub.com.


