OpenAPI is a specification used to describe API services. It is also known as a Swagger specification. It is used by various languages and frameworks as a format to describe API services. OpenAPI specifies how to produce a document which is supposed to be a textual representation of your entire API service. This document is just a text file in JSON or YAML format.


CoreAPI is also a specification used to describe API services, but due to a low industry adoption it remains a Django Rest Framework concept. Its main use case is to represent an API service as a Python object within a DRF project. This object can be later used to generate a textual API service specification in an OpenAPI or any other supported format.

An analogy that might help to illustrate the difference

Think Django model vs SQL: a model (CoreAPI) is just a Python object that you use to generate SQL statements (OpenAPI).