API
An API (Application Programming Interface) specifies how software components exchange data and commands in a stable, documented way.
In web systems, APIs define request and response formats, authentication rules, error behavior, and lifecycle expectations so clients can integrate without relying on internal implementation details.
For research software and data platforms, clear APIs improve reproducibility because workflows can be automated consistently across scripts, services, and teams.
In the application-development notes in this vault, the main recurring pattern is a typed FastAPI backend exposed through REST endpoints and sometimes consumed through generated frontend clients.
Why APIs matter
APIs are where software architecture becomes collaboration architecture. They determine which concepts are stable, which assumptions are explicit, and how much independent work several systems or teams can do without breaking each other.
That matters as much in scientific software as in product engineering. A poor interface makes automation brittle. A good interface makes a workflow inspectable, testable, and composable.
Common forms
- Web APIs expose services over protocols such as HTTP.
- Library APIs define how code calls into packages, frameworks, and modules.
- Data-service APIs provide access to storage, processing, or computational resources.
- Internal service APIs shape how distributed systems evolve over time.
Design pressures
- The interface should express domain concepts, not leak internal implementation details.
- Versioning, deprecation, and error semantics matter as much as the happy path.
- Authentication and authorization have to be treated as part of the contract, not as late additions.
- Good APIs are constrained enough to stay coherent but flexible enough to support new clients and workflows.