Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
September 4, 2023 23:55
September 15, 2023 15:13
September 25, 2023 14:16
September 26, 2023 13:33
September 14, 2023 11:16
September 14, 2023 11:13
June 15, 2023 14:32
September 20, 2017 11:25
September 14, 2023 11:16



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 and unmarshalling of request and response data (including webhooks)
  • Integration with popular libraries (Requests, Werkzeug) and frameworks (Django, Falcon, Flask, Starlette)
  • Customization with media type deserializers and format unmarshallers
  • Security data providers (API keys, Cookie, Basic and Bearer HTTP authentications)


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+

First steps

Firstly create your specification object.

from openapi_core import Spec

spec = Spec.from_file_path('openapi.json')

Now you can use it to validate and unmarshal against requests and/or responses.

from openapi_core import unmarshal_request

# raises error if request is invalid
result = unmarshal_request(request, spec=spec)

Retrieve validated and unmarshalled request data

# get parameters
path_params = result.parameters.path
query_params = result.parameters.query
cookies_params = result.parameters.cookies
headers_params = result.parameters.headers
# get body
body = result.body
# get security data
security =

Request object should implement OpenAPI Request protocol. Check Integrations to find officially supported implementations.

For more details read about Unmarshalling process.

If you just want to validate your request/response data without unmarshalling, read about Validation instead.

  • openapi-spec-validator
    Python library that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger), OpenAPI 3.0 and OpenAPI 3.1 specification. The validator aims to check for full compliance with the Specification.
  • openapi-schema-validator
    Python library that validates schema against the OpenAPI Schema Specification v3.0 and OpenAPI Schema Specification v3.1.
  • bottle-openapi-3
    OpenAPI 3.0 Support for the Bottle Web Framework
  • pyramid_openapi3
    Pyramid addon for OpenAPI3 validation of requests and responses.
  • tornado-openapi3
    Tornado OpenAPI 3 request and response validation library.


The project is under the terms of BSD 3-Clause License.