# Welcome to `PyJWT`

`PyJWT` is a Python library which allows you to encode and decode JSON Web Tokens (JWT). JWT is an open, industry-standard (RFC 7519) for representing claims securely between two parties.

## Sponsor

| If you want to quickly add secure token-based authentication to Python projects, feel free to check Auth0’s Python SDK and free plan at auth0.com/signup.

## Installation

You can install `pyjwt` with `pip`:

    $ pip install pyjwt

See Installation for more information.

## Example Usage

    >>> import jwt
    >>> encoded_jwt = jwt.encode({"some": "payload"}, "secret", algorithm="HS256")
    >>> jwt.decode(encoded_jwt, "secret", algorithms=["HS256"])
    {'some': 'payload'}

See Usage Examples for more examples.

## Index

- Installation
  - Cryptographic Dependencies (Optional)
- Usage Examples
  - Encoding & Decoding Tokens with HS256
  - Encoding & Decoding Tokens with RS256 (RSA)
  - Encoding & Decoding Tokens with PS256 (RSA)
  - Encoding & Decoding Tokens with EdDSA (Ed25519)
  - Encoding & Decoding Tokens with ES256 (ECDSA)
  - Specifying Additional Headers
  - Reading the Claimset without Validation
  - Reading Headers without Validation
  - Registered Claim Names
  - Key Length Validation
  - Requiring Presence of Claims
  - Retrieve RSA signing keys from a JWKS endpoint
  - OIDC Login Flow
- Frequently Asked Questions
  - How can I extract a public / private key from a x509 certificate?
- Digital Signature Algorithms
  - Minimum Key Length Requirements
  - Asymmetric (Public-key) Algorithms
  - Specifying an Algorithm
- API Reference
  - `encode()`
  - `decode()`
  - `decode_complete()`
  - `PyJWT`
  - `PyJWK`
  - `PyJWKSet`
  - `PyJWKClient`
  - `PyJWS`
  - Algorithms
  - Types
  - Warnings
  - Exceptions
- Changelog
  - Unreleased
  - v2.13.0
  - v2.12.1
  - v2.12.0
  - v2.11.0
  - v2.10.1
  - v2.10.0
  - v2.9.0
  - v2.8.0
  - v2.7.0
  - v2.6.0
  - v2.5.0
  - v2.4.0
  - v2.3.0
  - v2.2.0
  - v2.1.0
  - v2.0.1
  - v2.0.0
  - v1.7.1
  - v1.7.0
  - v1.6.4
  - v1.6.3
  - v1.6.1
  - v1.6.0
  - v1.5.3
  - v1.5.2
  - v1.5.1
  - v1.5.0
  - v1.4.2
  - v1.4.1
  - v1.4
  - v1.3
  - v1.2.0
  - v1.1.0
  - v1.0.1
  - v1.0.0