Skip to content

Status Codes

You can import the status module from esmerald:

from esmerald import status

The status is provided by Lilya which means you can also:

from lilya import status

By default, the Esmerald handlers take care of the status_code for you but you can always override the defaults and use your own.

Example

from typing import List, Dict

from esmerald import Esmerald, get, status, Gateway


@get('/users', status_code=status.HTTP_208_ALREADY_REPORTED)
async def all_users() -> List[Dict[str, str]]:
    return [{"name": "Natasha"}, {"name": "Tony"}, {"name": "Bruce"}]


app = Esmerald(
    routes=[
        Gateway(handler=all_users)
    ]
)

This will make sure that instead of returning 200 as default from @get(), it will return 208 instead.

esmerald.status

HTTP_100_CONTINUE module-attribute

HTTP_100_CONTINUE = 100

HTTP_101_SWITCHING_PROTOCOLS module-attribute

HTTP_101_SWITCHING_PROTOCOLS = 101

HTTP_102_PROCESSING module-attribute

HTTP_102_PROCESSING = 102

HTTP_103_EARLY_HINTS module-attribute

HTTP_103_EARLY_HINTS = 103

HTTP_200_OK module-attribute

HTTP_200_OK = 200

HTTP_201_CREATED module-attribute

HTTP_201_CREATED = 201

HTTP_202_ACCEPTED module-attribute

HTTP_202_ACCEPTED = 202

HTTP_203_NON_AUTHORITATIVE_INFORMATION module-attribute

HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203

HTTP_204_NO_CONTENT module-attribute

HTTP_204_NO_CONTENT = 204

HTTP_205_RESET_CONTENT module-attribute

HTTP_205_RESET_CONTENT = 205

HTTP_206_PARTIAL_CONTENT module-attribute

HTTP_206_PARTIAL_CONTENT = 206

HTTP_207_MULTI_STATUS module-attribute

HTTP_207_MULTI_STATUS = 207

HTTP_208_ALREADY_REPORTED module-attribute

HTTP_208_ALREADY_REPORTED = 208

HTTP_226_IM_USED module-attribute

HTTP_226_IM_USED = 226

HTTP_300_MULTIPLE_CHOICES module-attribute

HTTP_300_MULTIPLE_CHOICES = 300

HTTP_301_MOVED_PERMANENTLY module-attribute

HTTP_301_MOVED_PERMANENTLY = 301

HTTP_302_FOUND module-attribute

HTTP_302_FOUND = 302

HTTP_303_SEE_OTHER module-attribute

HTTP_303_SEE_OTHER = 303

HTTP_304_NOT_MODIFIED module-attribute

HTTP_304_NOT_MODIFIED = 304

HTTP_305_USE_PROXY module-attribute

HTTP_305_USE_PROXY = 305

HTTP_306_RESERVED module-attribute

HTTP_306_RESERVED = 306

HTTP_307_TEMPORARY_REDIRECT module-attribute

HTTP_307_TEMPORARY_REDIRECT = 307

HTTP_308_PERMANENT_REDIRECT module-attribute

HTTP_308_PERMANENT_REDIRECT = 308

HTTP_400_BAD_REQUEST module-attribute

HTTP_400_BAD_REQUEST = 400

HTTP_401_UNAUTHORIZED module-attribute

HTTP_401_UNAUTHORIZED = 401

HTTP_402_PAYMENT_REQUIRED module-attribute

HTTP_402_PAYMENT_REQUIRED = 402

HTTP_403_FORBIDDEN module-attribute

HTTP_403_FORBIDDEN = 403

HTTP_404_NOT_FOUND module-attribute

HTTP_404_NOT_FOUND = 404

HTTP_405_METHOD_NOT_ALLOWED module-attribute

HTTP_405_METHOD_NOT_ALLOWED = 405

HTTP_406_NOT_ACCEPTABLE module-attribute

HTTP_406_NOT_ACCEPTABLE = 406

HTTP_407_PROXY_AUTHENTICATION_REQUIRED module-attribute

HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407

HTTP_408_REQUEST_TIMEOUT module-attribute

HTTP_408_REQUEST_TIMEOUT = 408

HTTP_409_CONFLICT module-attribute

HTTP_409_CONFLICT = 409

HTTP_410_GONE module-attribute

HTTP_410_GONE = 410

HTTP_411_LENGTH_REQUIRED module-attribute

HTTP_411_LENGTH_REQUIRED = 411

HTTP_412_PRECONDITION_FAILED module-attribute

HTTP_412_PRECONDITION_FAILED = 412

HTTP_413_REQUEST_ENTITY_TOO_LARGE module-attribute

HTTP_413_REQUEST_ENTITY_TOO_LARGE = 413

HTTP_414_REQUEST_URI_TOO_LONG module-attribute

HTTP_414_REQUEST_URI_TOO_LONG = 414

HTTP_415_UNSUPPORTED_MEDIA_TYPE module-attribute

HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415

HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE module-attribute

HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE = 416

HTTP_417_EXPECTATION_FAILED module-attribute

HTTP_417_EXPECTATION_FAILED = 417

HTTP_418_IM_A_TEAPOT module-attribute

HTTP_418_IM_A_TEAPOT = 418

HTTP_421_MISDIRECTED_REQUEST module-attribute

HTTP_421_MISDIRECTED_REQUEST = 421

HTTP_422_UNPROCESSABLE_ENTITY module-attribute

HTTP_422_UNPROCESSABLE_ENTITY = 422

HTTP_423_LOCKED module-attribute

HTTP_423_LOCKED = 423

HTTP_424_FAILED_DEPENDENCY module-attribute

HTTP_424_FAILED_DEPENDENCY = 424

HTTP_425_TOO_EARLY module-attribute

HTTP_425_TOO_EARLY = 425

HTTP_426_UPGRADE_REQUIRED module-attribute

HTTP_426_UPGRADE_REQUIRED = 426

HTTP_428_PRECONDITION_REQUIRED module-attribute

HTTP_428_PRECONDITION_REQUIRED = 428

HTTP_429_TOO_MANY_REQUESTS module-attribute

HTTP_429_TOO_MANY_REQUESTS = 429

HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE module-attribute

HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451

HTTP_500_INTERNAL_SERVER_ERROR module-attribute

HTTP_500_INTERNAL_SERVER_ERROR = 500

HTTP_501_NOT_IMPLEMENTED module-attribute

HTTP_501_NOT_IMPLEMENTED = 501

HTTP_502_BAD_GATEWAY module-attribute

HTTP_502_BAD_GATEWAY = 502

HTTP_503_SERVICE_UNAVAILABLE module-attribute

HTTP_503_SERVICE_UNAVAILABLE = 503

HTTP_504_GATEWAY_TIMEOUT module-attribute

HTTP_504_GATEWAY_TIMEOUT = 504

HTTP_505_HTTP_VERSION_NOT_SUPPORTED module-attribute

HTTP_505_HTTP_VERSION_NOT_SUPPORTED = 505

HTTP_506_VARIANT_ALSO_NEGOTIATES module-attribute

HTTP_506_VARIANT_ALSO_NEGOTIATES = 506

HTTP_507_INSUFFICIENT_STORAGE module-attribute

HTTP_507_INSUFFICIENT_STORAGE = 507

HTTP_508_LOOP_DETECTED module-attribute

HTTP_508_LOOP_DETECTED = 508

HTTP_510_NOT_EXTENDED module-attribute

HTTP_510_NOT_EXTENDED = 510

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 module-attribute

WS_1000_NORMAL_CLOSURE = 1000

WS_1001_GOING_AWAY module-attribute

WS_1001_GOING_AWAY = 1001

WS_1002_PROTOCOL_ERROR module-attribute

WS_1002_PROTOCOL_ERROR = 1002

WS_1003_UNSUPPORTED_DATA module-attribute

WS_1003_UNSUPPORTED_DATA = 1003

WS_1005_NO_STATUS_RCVD module-attribute

WS_1005_NO_STATUS_RCVD = 1005

WS_1006_ABNORMAL_CLOSURE module-attribute

WS_1006_ABNORMAL_CLOSURE = 1006

WS_1007_INVALID_FRAME_PAYLOAD_DATA module-attribute

WS_1007_INVALID_FRAME_PAYLOAD_DATA = 1007

WS_1008_POLICY_VIOLATION module-attribute

WS_1008_POLICY_VIOLATION = 1008

WS_1009_MESSAGE_TOO_BIG module-attribute

WS_1009_MESSAGE_TOO_BIG = 1009

WS_1010_MANDATORY_EXT module-attribute

WS_1010_MANDATORY_EXT = 1010

WS_1011_INTERNAL_ERROR module-attribute

WS_1011_INTERNAL_ERROR = 1011

WS_1012_SERVICE_RESTART module-attribute

WS_1012_SERVICE_RESTART = 1012

WS_1013_TRY_AGAIN_LATER module-attribute

WS_1013_TRY_AGAIN_LATER = 1013

WS_1014_BAD_GATEWAY module-attribute

WS_1014_BAD_GATEWAY = 1014

WS_1015_TLS_HANDSHAKE module-attribute

WS_1015_TLS_HANDSHAKE = 1015