Ruby on Rails HTTP Status codes Feb 1, 2022


When working on a rails application (or specially on an api) it's not uncommon to have to handle different http status codes.

At some point, we end up getting to know some of them, but the truth is that there are a lot, and the good news is that if you're writing a ruby on rails application, there are mappings to handle the status codes by their name.

You can quickly take a look at the list of status codes by simply loading a rails console bundle exec rails console and then check Rack::Utils::HTTP_STATUS_CODES or Rack::Utils::SYMBOL_TO_STATUS_CODE to get the whole list of supported status codes on rails.

The table below contains all the supported status codes on rails with their full names and the corresponding ruby symbols.

Code Status Symbol
100 Continue :continue
101 Switching Protocols :switching_protocols
102 Processing :processing
103 Early Hints :early_hints
200 OK :ok
201 Created :created
202 Accepted :accepted
203 Non-Authoritative Information :non_authoritative_information
204 No Content :no_content
205 Reset Content :reset_content
206 Partial Content :partial_content
207 Multi-Status :multi_status
208 Already Reported :already_reported
226 IM Used :im_used
300 Multiple Choices :multiple_choices
301 Moved Permanently :moved_permanently
302 Found :found
303 See Other :see_other
304 Not Modified :not_modified
305 Use Proxy :use_proxy
306 (Unused) :"(unused)"
307 Temporary Redirect :temporary_redirect
308 Permanent Redirect :permanent_redirect
400 Bad Request :bad_request
401 Unauthorized :unauthorized
402 Payment Required :payment_required
403 Forbidden :forbidden
404 Not Found :not_found
405 Method Not Allowed :method_not_allowed
406 Not Acceptable :not_acceptable
407 Proxy Authentication Required :proxy_authentication_required
408 Request Timeout :request_timeout
409 Conflict :conflict
410 Gone :gone
411 Length Required :length_required
412 Precondition Failed :precondition_failed
413 Payload Too Large :payload_too_large
414 Request-URI Too Long :uri_too_long
415 Unsupported Media Type :unsupported_media_type
416 Requested Range Not Satisfiable :range_not_satisfiable
417 Expectation Failed :expectation_failed
421 Misdirected Request :misdirected_request
422 Unprocessable Entity :unprocessable_entity
423 Locked :locked
424 Failed Dependency :failed_dependency
425 Too Early :too_early
426 Upgrade Required :upgrade_required
428 Precondition Required :precondition_required
429 Too Many Requests :too_many_requests
431 Request Header Fields Too Large :request_header_fields_too_large
451 Unavailable for Legal Reasons :unavailable_for_legal_reasons
500 Internal Server Error :internal_server_error
501 Not Implemented :not_implemented
502 Bad Gateway :bad_gateway
503 Service Unavailable :service_unavailable
504 Gateway Timeout :gateway_timeout
505 HTTP Version Not Supported :http_version_not_supported
506 Variant Also Negotiates :variant_also_negotiates
507 Insufficient Storage :insufficient_storage
508 Loop Detected :loop_detected
509 Bandwidth Limit Exceeded :bandwidth_limit_exceeded
510 Not Extended :not_extended
511 Network Authentication Required :network_authentication_required

That's a lot of codes 😅 I'll try to keep that table updated as new codes get added.