Skip to main content

client-side and server-side support for the OpenAPI Specification v3

Project description


Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI v3.0 and OpenAPI v3.1 specification.

Key features

  • Validation of requests and responses

  • Schema casting and unmarshalling

  • Media type and parameters deserialization

  • Security providers (API keys, Cookie, Basic and Bearer HTTP authentications)

  • Custom deserializers and formats

  • Integration with libraries and frameworks


Check documentation to see more details about the features. All documentation is in the “docs” directory and online at


Recommended way (via pip):

$ pip install openapi-core

Alternatively you can download the code and install from the repository:

$ pip install -e git+


Firstly create your specification object. By default, OpenAPI spec version is detected:

from json import load
from openapi_core import Spec

with open('openapi.json', 'r') as spec_file:
   spec_dict = load(spec_file)

spec = Spec.create(spec_dict)


Now you can use it to validate against requests

from openapi_core import openapi_request_validator

result = openapi_request_validator.validate(spec, request)

# raise errors if request invalid

# get list of errors
errors = result.errors

and unmarshal request data from validation result

# get parameters object with path, query, cookies and headers parameters
validated_params = result.parameters
# or specific parameters
validated_path_params = result.parameters.path

# get body
validated_body = result.body

# get security data
validated_security =

Request object should implement OpenAPI Request protocol (See Integrations).


You can also validate against responses

from openapi_core import openapi_response_validator

result = openapi_response_validator.validate(spec, request, response)

# raise errors if response invalid

# get list of errors
errors = result.errors

and unmarshal response data from validation result

# get headers
validated_headers = result.headers

# get data
validated_data =

Response object should implement OpenAPI Response protocol (See Integrations).

In order to explicitly validate a:

  • OpenAPI 3.0 spec, import openapi_v30_request_validator or openapi_v30_response_validator

  • OpenAPI 3.1 spec, import openapi_v31_request_validator or openapi_v31_response_validator

from openapi_core import openapi_v31_response_validator

result = openapi_v31_response_validator.validate(spec, request, response)

You can also explicitly import openapi_v3_request_validator or openapi_v3_response_validator which is a shortcut to the latest v3 release.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openapi_core-0.16.5.tar.gz (35.4 kB view hashes)

Uploaded source

Built Distribution

openapi_core-0.16.5-py3-none-any.whl (68.4 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page