Skip to main content
FastAPI Docs

Search documentation

Type to search this documentation.

On this pageOverview

Status Codes

You can import the status module from fastapi:

from fastapi import status

status is provided directly by Starlette.

It contains 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 memorize the integer status codes.

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

from fastapi import FastAPI, status

app = FastAPI()

@app.get("/items/", status_code=status.HTTP_418_IM_A_TEAPOT)
def read_items():
    return [{"name": "Plumbus"}, {"name": "Portal Gun"}]

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

And RFC 9110 - https://www.rfc-editor.org/rfc/rfc9110

HTTP_100_CONTINUE = 100

HTTP_101_SWITCHING_PROTOCOLS module-attribute

Section titled “HTTP_101_SWITCHING_PROTOCOLS module-attribute”
HTTP_101_SWITCHING_PROTOCOLS = 101
HTTP_102_PROCESSING = 102
HTTP_103_EARLY_HINTS = 103
HTTP_200_OK = 200
HTTP_201_CREATED = 201
HTTP_202_ACCEPTED = 202

HTTP_203_NON_AUTHORITATIVE_INFORMATION module-attribute

Section titled “HTTP_203_NON_AUTHORITATIVE_INFORMATION module-attribute”
HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203
HTTP_204_NO_CONTENT = 204
HTTP_205_RESET_CONTENT = 205
HTTP_206_PARTIAL_CONTENT = 206
HTTP_207_MULTI_STATUS = 207
HTTP_208_ALREADY_REPORTED = 208
HTTP_226_IM_USED = 226
HTTP_300_MULTIPLE_CHOICES = 300
HTTP_301_MOVED_PERMANENTLY = 301
HTTP_302_FOUND = 302
HTTP_303_SEE_OTHER = 303
HTTP_304_NOT_MODIFIED = 304
HTTP_305_USE_PROXY = 305
HTTP_306_RESERVED = 306

HTTP_307_TEMPORARY_REDIRECT module-attribute

Section titled “HTTP_307_TEMPORARY_REDIRECT module-attribute”
HTTP_307_TEMPORARY_REDIRECT = 307

HTTP_308_PERMANENT_REDIRECT module-attribute

Section titled “HTTP_308_PERMANENT_REDIRECT module-attribute”
HTTP_308_PERMANENT_REDIRECT = 308
HTTP_400_BAD_REQUEST = 400
HTTP_401_UNAUTHORIZED = 401
HTTP_402_PAYMENT_REQUIRED = 402
HTTP_403_FORBIDDEN = 403
HTTP_404_NOT_FOUND = 404

HTTP_405_METHOD_NOT_ALLOWED module-attribute

Section titled “HTTP_405_METHOD_NOT_ALLOWED module-attribute”
HTTP_405_METHOD_NOT_ALLOWED = 405
HTTP_406_NOT_ACCEPTABLE = 406

HTTP_407_PROXY_AUTHENTICATION_REQUIRED module-attribute

Section titled “HTTP_407_PROXY_AUTHENTICATION_REQUIRED module-attribute”
HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407
HTTP_408_REQUEST_TIMEOUT = 408
HTTP_409_CONFLICT = 409
HTTP_410_GONE = 410
HTTP_411_LENGTH_REQUIRED = 411

HTTP_412_PRECONDITION_FAILED module-attribute

Section titled “HTTP_412_PRECONDITION_FAILED module-attribute”
HTTP_412_PRECONDITION_FAILED = 412
HTTP_413_CONTENT_TOO_LARGE = 413
HTTP_414_URI_TOO_LONG = 414

HTTP_415_UNSUPPORTED_MEDIA_TYPE module-attribute

Section titled “HTTP_415_UNSUPPORTED_MEDIA_TYPE module-attribute”
HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415

HTTP_416_RANGE_NOT_SATISFIABLE module-attribute

Section titled “HTTP_416_RANGE_NOT_SATISFIABLE module-attribute”
HTTP_416_RANGE_NOT_SATISFIABLE = 416

HTTP_417_EXPECTATION_FAILED module-attribute

Section titled “HTTP_417_EXPECTATION_FAILED module-attribute”
HTTP_417_EXPECTATION_FAILED = 417
HTTP_418_IM_A_TEAPOT = 418

HTTP_421_MISDIRECTED_REQUEST module-attribute

Section titled “HTTP_421_MISDIRECTED_REQUEST module-attribute”
HTTP_421_MISDIRECTED_REQUEST = 421

HTTP_422_UNPROCESSABLE_CONTENT module-attribute

Section titled “HTTP_422_UNPROCESSABLE_CONTENT module-attribute”
HTTP_422_UNPROCESSABLE_CONTENT = 422
HTTP_423_LOCKED = 423
HTTP_424_FAILED_DEPENDENCY = 424
HTTP_425_TOO_EARLY = 425
HTTP_426_UPGRADE_REQUIRED = 426

HTTP_428_PRECONDITION_REQUIRED module-attribute

Section titled “HTTP_428_PRECONDITION_REQUIRED module-attribute”
HTTP_428_PRECONDITION_REQUIRED = 428
HTTP_429_TOO_MANY_REQUESTS = 429

HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE module-attribute

Section titled “HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE module-attribute”
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431
Section titled “HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS module-attribute”
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451

HTTP_500_INTERNAL_SERVER_ERROR module-attribute

Section titled “HTTP_500_INTERNAL_SERVER_ERROR module-attribute”
HTTP_500_INTERNAL_SERVER_ERROR = 500
HTTP_501_NOT_IMPLEMENTED = 501
HTTP_502_BAD_GATEWAY = 502

HTTP_503_SERVICE_UNAVAILABLE module-attribute

Section titled “HTTP_503_SERVICE_UNAVAILABLE module-attribute”
HTTP_503_SERVICE_UNAVAILABLE = 503
HTTP_504_GATEWAY_TIMEOUT = 504

HTTP_505_HTTP_VERSION_NOT_SUPPORTED module-attribute

Section titled “HTTP_505_HTTP_VERSION_NOT_SUPPORTED module-attribute”
HTTP_505_HTTP_VERSION_NOT_SUPPORTED = 505

HTTP_506_VARIANT_ALSO_NEGOTIATES module-attribute

Section titled “HTTP_506_VARIANT_ALSO_NEGOTIATES module-attribute”
HTTP_506_VARIANT_ALSO_NEGOTIATES = 506

HTTP_507_INSUFFICIENT_STORAGE module-attribute

Section titled “HTTP_507_INSUFFICIENT_STORAGE module-attribute”
HTTP_507_INSUFFICIENT_STORAGE = 507
HTTP_508_LOOP_DETECTED = 508
HTTP_510_NOT_EXTENDED = 510

HTTP_511_NETWORK_AUTHENTICATION_REQUIRED module-attribute

Section titled “HTTP_511_NETWORK_AUTHENTICATION_REQUIRED module-attribute”
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 = 1000
WS_1001_GOING_AWAY = 1001
WS_1002_PROTOCOL_ERROR = 1002
WS_1003_UNSUPPORTED_DATA = 1003
WS_1005_NO_STATUS_RCVD = 1005
WS_1006_ABNORMAL_CLOSURE = 1006

WS_1007_INVALID_FRAME_PAYLOAD_DATA module-attribute

Section titled “WS_1007_INVALID_FRAME_PAYLOAD_DATA module-attribute”
WS_1007_INVALID_FRAME_PAYLOAD_DATA = 1007
WS_1008_POLICY_VIOLATION = 1008
WS_1009_MESSAGE_TOO_BIG = 1009
WS_1010_MANDATORY_EXT = 1010
WS_1011_INTERNAL_ERROR = 1011
WS_1012_SERVICE_RESTART = 1012
WS_1013_TRY_AGAIN_LATER = 1013
WS_1014_BAD_GATEWAY = 1014
WS_1015_TLS_HANDSHAKE = 1015
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu