Status Codes

You can import the status module from fastapi:

  1. from fastapi import status

status is provided directly by Starlette.

It containes a group of named constants (variables) with integer status codes.

For example:

  • 200: status.HTTP_200_OK
  • 403: status.HTTP_403_FORBIDDEN
  • etc.

It can be convenient to quickly access HTTP (and WebSocket) status codes in your app, using autocompletion for the name without having to remember the integer status codes by memory.

Read more about it in the FastAPI docs about Response Status Code.

Example

  1. from fastapi import FastAPI, status
  2. app = FastAPI()
  3. @app.get("/items/", status_code=status.HTTP_418_IM_A_TEAPOT)
  4. def read_items():
  5. return [{"name": "Plumbus"}, {"name": "Portal Gun"}]

fastapi.status

HTTP codes See HTTP Status Code Registry: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

And RFC 2324 - https://tools.ietf.org/html/rfc2324

HTTP_100_CONTINUE module-attribute

  1. HTTP_100_CONTINUE = 100

HTTP_101_SWITCHING_PROTOCOLS module-attribute

  1. HTTP_101_SWITCHING_PROTOCOLS = 101

HTTP_102_PROCESSING module-attribute

  1. HTTP_102_PROCESSING = 102

HTTP_103_EARLY_HINTS module-attribute

  1. HTTP_103_EARLY_HINTS = 103

HTTP_200_OK module-attribute

  1. HTTP_200_OK = 200

HTTP_201_CREATED module-attribute

  1. HTTP_201_CREATED = 201

HTTP_202_ACCEPTED module-attribute

  1. HTTP_202_ACCEPTED = 202

HTTP_203_NON_AUTHORITATIVE_INFORMATION module-attribute

  1. HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203

HTTP_204_NO_CONTENT module-attribute

  1. HTTP_204_NO_CONTENT = 204

HTTP_205_RESET_CONTENT module-attribute

  1. HTTP_205_RESET_CONTENT = 205

HTTP_206_PARTIAL_CONTENT module-attribute

  1. HTTP_206_PARTIAL_CONTENT = 206

HTTP_207_MULTI_STATUS module-attribute

  1. HTTP_207_MULTI_STATUS = 207

HTTP_208_ALREADY_REPORTED module-attribute

  1. HTTP_208_ALREADY_REPORTED = 208

HTTP_226_IM_USED module-attribute

  1. HTTP_226_IM_USED = 226

HTTP_300_MULTIPLE_CHOICES module-attribute

  1. HTTP_300_MULTIPLE_CHOICES = 300

HTTP_301_MOVED_PERMANENTLY module-attribute

  1. HTTP_301_MOVED_PERMANENTLY = 301

HTTP_302_FOUND module-attribute

  1. HTTP_302_FOUND = 302

HTTP_303_SEE_OTHER module-attribute

  1. HTTP_303_SEE_OTHER = 303

HTTP_304_NOT_MODIFIED module-attribute

  1. HTTP_304_NOT_MODIFIED = 304

HTTP_305_USE_PROXY module-attribute

  1. HTTP_305_USE_PROXY = 305

HTTP_306_RESERVED module-attribute

  1. HTTP_306_RESERVED = 306

HTTP_307_TEMPORARY_REDIRECT module-attribute

  1. HTTP_307_TEMPORARY_REDIRECT = 307

HTTP_308_PERMANENT_REDIRECT module-attribute

  1. HTTP_308_PERMANENT_REDIRECT = 308

HTTP_400_BAD_REQUEST module-attribute

  1. HTTP_400_BAD_REQUEST = 400

HTTP_401_UNAUTHORIZED module-attribute

  1. HTTP_401_UNAUTHORIZED = 401

HTTP_402_PAYMENT_REQUIRED module-attribute

  1. HTTP_402_PAYMENT_REQUIRED = 402

HTTP_403_FORBIDDEN module-attribute

  1. HTTP_403_FORBIDDEN = 403

HTTP_404_NOT_FOUND module-attribute

  1. HTTP_404_NOT_FOUND = 404

HTTP_405_METHOD_NOT_ALLOWED module-attribute

  1. HTTP_405_METHOD_NOT_ALLOWED = 405

HTTP_406_NOT_ACCEPTABLE module-attribute

  1. HTTP_406_NOT_ACCEPTABLE = 406

HTTP_407_PROXY_AUTHENTICATION_REQUIRED module-attribute

  1. HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407

HTTP_408_REQUEST_TIMEOUT module-attribute

  1. HTTP_408_REQUEST_TIMEOUT = 408

HTTP_409_CONFLICT module-attribute

  1. HTTP_409_CONFLICT = 409

HTTP_410_GONE module-attribute

  1. HTTP_410_GONE = 410

HTTP_411_LENGTH_REQUIRED module-attribute

  1. HTTP_411_LENGTH_REQUIRED = 411

HTTP_412_PRECONDITION_FAILED module-attribute

  1. HTTP_412_PRECONDITION_FAILED = 412

HTTP_413_REQUEST_ENTITY_TOO_LARGE module-attribute

  1. HTTP_413_REQUEST_ENTITY_TOO_LARGE = 413

HTTP_414_REQUEST_URI_TOO_LONG module-attribute

  1. HTTP_414_REQUEST_URI_TOO_LONG = 414

HTTP_415_UNSUPPORTED_MEDIA_TYPE module-attribute

  1. HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415

HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE module-attribute

  1. HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE = 416

HTTP_417_EXPECTATION_FAILED module-attribute

  1. HTTP_417_EXPECTATION_FAILED = 417

HTTP_418_IM_A_TEAPOT module-attribute

  1. HTTP_418_IM_A_TEAPOT = 418

HTTP_421_MISDIRECTED_REQUEST module-attribute

  1. HTTP_421_MISDIRECTED_REQUEST = 421

HTTP_422_UNPROCESSABLE_ENTITY module-attribute

  1. HTTP_422_UNPROCESSABLE_ENTITY = 422

HTTP_423_LOCKED module-attribute

  1. HTTP_423_LOCKED = 423

HTTP_424_FAILED_DEPENDENCY module-attribute

  1. HTTP_424_FAILED_DEPENDENCY = 424

HTTP_425_TOO_EARLY module-attribute

  1. HTTP_425_TOO_EARLY = 425

HTTP_426_UPGRADE_REQUIRED module-attribute

  1. HTTP_426_UPGRADE_REQUIRED = 426

HTTP_428_PRECONDITION_REQUIRED module-attribute

  1. HTTP_428_PRECONDITION_REQUIRED = 428

HTTP_429_TOO_MANY_REQUESTS module-attribute

  1. HTTP_429_TOO_MANY_REQUESTS = 429

HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE module-attribute

  1. HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431
  1. HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451

HTTP_500_INTERNAL_SERVER_ERROR module-attribute

  1. HTTP_500_INTERNAL_SERVER_ERROR = 500

HTTP_501_NOT_IMPLEMENTED module-attribute

  1. HTTP_501_NOT_IMPLEMENTED = 501

HTTP_502_BAD_GATEWAY module-attribute

  1. HTTP_502_BAD_GATEWAY = 502

HTTP_503_SERVICE_UNAVAILABLE module-attribute

  1. HTTP_503_SERVICE_UNAVAILABLE = 503

HTTP_504_GATEWAY_TIMEOUT module-attribute

  1. HTTP_504_GATEWAY_TIMEOUT = 504

HTTP_505_HTTP_VERSION_NOT_SUPPORTED module-attribute

  1. HTTP_505_HTTP_VERSION_NOT_SUPPORTED = 505

HTTP_506_VARIANT_ALSO_NEGOTIATES module-attribute

  1. HTTP_506_VARIANT_ALSO_NEGOTIATES = 506

HTTP_507_INSUFFICIENT_STORAGE module-attribute

  1. HTTP_507_INSUFFICIENT_STORAGE = 507

HTTP_508_LOOP_DETECTED module-attribute

  1. HTTP_508_LOOP_DETECTED = 508

HTTP_510_NOT_EXTENDED module-attribute

  1. HTTP_510_NOT_EXTENDED = 510

HTTP_511_NETWORK_AUTHENTICATION_REQUIRED module-attribute

  1. HTTP_511_NETWORK_AUTHENTICATION_REQUIRED = 511

WebSocket codes https://www.iana.org/assignments/websocket/websocket.xml#close-code-number https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent

WS_1000_NORMAL_CLOSURE module-attribute

  1. WS_1000_NORMAL_CLOSURE = 1000

WS_1001_GOING_AWAY module-attribute

  1. WS_1001_GOING_AWAY = 1001

WS_1002_PROTOCOL_ERROR module-attribute

  1. WS_1002_PROTOCOL_ERROR = 1002

WS_1003_UNSUPPORTED_DATA module-attribute

  1. WS_1003_UNSUPPORTED_DATA = 1003

WS_1005_NO_STATUS_RCVD module-attribute

  1. WS_1005_NO_STATUS_RCVD = 1005

WS_1006_ABNORMAL_CLOSURE module-attribute

  1. WS_1006_ABNORMAL_CLOSURE = 1006

WS_1007_INVALID_FRAME_PAYLOAD_DATA module-attribute

  1. WS_1007_INVALID_FRAME_PAYLOAD_DATA = 1007

WS_1008_POLICY_VIOLATION module-attribute

  1. WS_1008_POLICY_VIOLATION = 1008

WS_1009_MESSAGE_TOO_BIG module-attribute

  1. WS_1009_MESSAGE_TOO_BIG = 1009

WS_1010_MANDATORY_EXT module-attribute

  1. WS_1010_MANDATORY_EXT = 1010

WS_1011_INTERNAL_ERROR module-attribute

  1. WS_1011_INTERNAL_ERROR = 1011

WS_1012_SERVICE_RESTART module-attribute

  1. WS_1012_SERVICE_RESTART = 1012

WS_1013_TRY_AGAIN_LATER module-attribute

  1. WS_1013_TRY_AGAIN_LATER = 1013

WS_1014_BAD_GATEWAY module-attribute

  1. WS_1014_BAD_GATEWAY = 1014

WS_1015_TLS_HANDSHAKE module-attribute

  1. WS_1015_TLS_HANDSHAKE = 1015