API

This part of the documentation covers all the interfaces of Requests. For parts where Requests depends on external libraries, we document the most important right here and provide links to the canonical documentation.

Main Interface

All of Request’s functionality can be accessed by these 7 methods. They all return an instance of the Response object.

requests.request(method, url, **kwargs)[source]

Constructs and sends a Request.

Parameters:
  • method – method for the new Request object: GET, OPTIONS, HEAD, POST, PUT, PATCH, or DELETE.

  • url – URL for the new Request object.

  • params – (optional) Dictionary, list of tuples or bytes to send in the query string for the Request.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • json – (optional) A JSON serializable Python object to send in the body of the Request.

  • headers – (optional) Dictionary of HTTP Headers to send with the Request.

  • cookies – (optional) Dict or CookieJar object to send with the Request.

  • files – (optional) Dictionary of 'name': file-like-objects (or {'name': file-tuple}) for multipart encoding upload. file-tuple can be a 2-tuple ('filename', fileobj), 3-tuple ('filename', fileobj, 'content_type') or a 4-tuple ('filename', fileobj, 'content_type', custom_headers), where 'content-type' is a string defining the content type of the given file and custom_headers a dict-like object containing additional headers to add for the file.

  • auth – (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.

  • timeout (float or tuple) – (optional) How many seconds to wait for the server to send data before giving up, as a float, or a (connect timeout, read timeout) tuple.

  • allow_redirects (bool) – (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to True.

  • proxies – (optional) Dictionary mapping protocol to the URL of the proxy.

  • verify – (optional) Either a boolean, in which case it controls whether we verify the server’s TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to True.

  • stream – (optional) if False, the response content will be immediately downloaded.

  • cert – (optional) if String, path to ssl client cert file (.pem). If Tuple, (‘cert’, ‘key’) pair.

Returns:

Response object

Return type:

requests.Response

Usage:

>>> import requests
>>> req = requests.request('GET', 'https://httpbin.org/get')
>>> req
<Response [200]>
requests.head(url, **kwargs)[source]

Sends a HEAD request.

Parameters:
  • url – URL for the new Request object.

  • **kwargs – Optional arguments that request takes. If allow_redirects is not provided, it will be set to False (as opposed to the default request() behavior).

Returns:

Response object

Return type:

requests.Response

requests.get(url, params=None, **kwargs)[source]

Sends a GET request.

Parameters:
  • url – URL for the new Request object.

  • params – (optional) Dictionary, list of tuples or bytes to send in the query string for the Request.

  • **kwargs – Optional arguments that request takes.

Returns:

Response object

Return type:

requests.Response

requests.post(url, data=None, json=None, **kwargs)[source]

Sends a POST request.

Parameters:
  • url – URL for the new Request object.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • json – (optional) A JSON serializable Python object to send in the body of the Request.

  • **kwargs – Optional arguments that request takes.

Returns:

Response object

Return type:

requests.Response

requests.put(url, data=None, **kwargs)[source]

Sends a PUT request.

Parameters:
  • url – URL for the new Request object.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • json – (optional) A JSON serializable Python object to send in the body of the Request.

  • **kwargs – Optional arguments that request takes.

Returns:

Response object

Return type:

requests.Response

requests.patch(url, data=None, **kwargs)[source]

Sends a PATCH request.

Parameters:
  • url – URL for the new Request object.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • json – (optional) A JSON serializable Python object to send in the body of the Request.

  • **kwargs – Optional arguments that request takes.

Returns:

Response object

Return type:

requests.Response

requests.delete(url, **kwargs)[source]

Sends a DELETE request.

Parameters:
  • url – URL for the new Request object.

  • **kwargs – Optional arguments that request takes.

Returns:

Response object

Return type:

requests.Response


class requests.Response[source]

The Response object, which contains a server’s response to an HTTP request.

property apparent_encoding

The apparent encoding, provided by the charset_normalizer or chardet libraries.

close()[source]

Releases the connection back to the pool. Once this method has been called the underlying raw object must not be accessed again.

Note: Should not normally need to be called explicitly.

property content

Content of the response, in bytes.

cookies

A CookieJar of Cookies the server sent back.

elapsed

The amount of time elapsed between sending the request and the arrival of the response (as a timedelta). This property specifically measures the time taken between sending the first byte of the request and finishing parsing the headers. It is therefore unaffected by consuming the response content or the value of the stream keyword argument.

encoding

Encoding to decode with when accessing r.text.

headers

Case-insensitive Dictionary of Response Headers. For example, headers['content-encoding'] will return the value of a 'Content-Encoding' response header.

history

A list of Response objects from the history of the Request. Any redirect responses will end up here. The list is sorted from the oldest to the most recent request.

property is_permanent_redirect

True if this Response one of the permanent versions of redirect.

property is_redirect

True if this Response is a well-formed HTTP redirect that could have been processed automatically (by Session.resolve_redirects()).

iter_content(chunk_size=1, decode_unicode=False)[source]

Iterates over the response data. When stream=True is set on the request, this avoids reading the content at once into memory for large responses. The chunk size is the number of bytes it should read into memory. This is not necessarily the length of each item returned as decoding can take place.

chunk_size must be of type int or None. A value of None will function differently depending on the value of stream. stream=True will read data as it arrives in whatever size the chunks are received. If stream=False, data is returned as a single chunk.

If decode_unicode is True, content will be decoded using the best available encoding based on the response.

iter_lines(chunk_size=512, decode_unicode=False, delimiter=None)[source]

Iterates over the response data, one line at a time. When stream=True is set on the request, this avoids reading the content at once into memory for large responses.

Note

This method is not reentrant safe.

json(**kwargs)[source]

Returns the json-encoded content of a response, if any.

Parameters:

**kwargs – Optional arguments that json.loads takes.

Raises:

requests.exceptions.JSONDecodeError – If the response body does not contain valid json.

Returns the parsed header links of the response, if any.

property next

Returns a PreparedRequest for the next request in a redirect chain, if there is one.

property ok

Returns True if status_code is less than 400, False if not.

This attribute checks if the status code of the response is between 400 and 600 to see if there was a client error or a server error. If the status code is between 200 and 400, this will return True. This is not a check to see if the response code is 200 OK.

raise_for_status()[source]

Raises HTTPError, if one occurred.

raw

File-like object representation of response (for advanced usage). Use of raw requires that stream=True be set on the request. This requirement does not apply for use internally to Requests.

reason

Textual reason of responded HTTP Status, e.g. “Not Found” or “OK”.

request

The PreparedRequest object to which this is a response.

status_code

Integer Code of responded HTTP Status, e.g. 404 or 200.

property text

Content of the response, in unicode.

If Response.encoding is None, encoding will be guessed using charset_normalizer or chardet.

The encoding of the response content is determined based solely on HTTP headers, following RFC 2616 to the letter. If you can take advantage of non-HTTP knowledge to make a better guess at the encoding, you should set r.encoding appropriately before accessing this property.

url

Final URL location of Response.

Async

Utilities

These functions are used internally, but may be useful outside of Requests.

Cookies

requests.utils.dict_from_cookiejar(cj)[source]

Returns a key/value dictionary from a CookieJar.

Parameters:

cj – CookieJar object to extract cookies from.

Return type:

dict

requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)[source]

Returns a CookieJar from a key/value dictionary.

Parameters:
  • cookie_dict – Dict of key/values to insert into CookieJar.

  • cookiejar – (optional) A cookiejar to add the cookies to.

  • overwrite – (optional) If False, will not replace cookies already in the jar with new ones.

Return type:

CookieJar

requests.utils.add_dict_to_cookiejar(cj, cookie_dict)[source]

Returns a CookieJar from a key/value dictionary.

Parameters:
  • cj – CookieJar to insert cookies into.

  • cookie_dict – Dict of key/values to insert into CookieJar.

Return type:

CookieJar

Encodings

requests.utils.get_encodings_from_content(content)[source]

Returns encodings from given content string.

Parameters:

content – bytestring to extract encodings from.

requests.utils.get_encoding_from_headers(headers)[source]

Returns encodings from given HTTP Header Dict.

Parameters:

headers – dictionary to extract encoding from.

Return type:

str

requests.utils.get_unicode_from_response(r)[source]

Returns the requested content back in unicode.

Parameters:

r – Response object to get unicode content from.

Tried:

  1. charset from content-type

  2. fall back and replace all unicode characters

Return type:

str

Internals

These items are an internal component to Requests, and should never be seen by the end user (developer). This part of the API documentation exists for those who are extending the functionality of Requests.

Exceptions

exception requests.HTTPError(*args, **kwargs)[source]

An HTTP error occurred.

exception requests.RequestException(*args, **kwargs)[source]

There was an ambiguous exception that occurred while handling your request.

exception requests.URLRequired(*args, **kwargs)[source]

A valid URL is required to make a request.

exception requests.TooManyRedirects(*args, **kwargs)[source]

Too many redirects.

Classes

class requests.Request(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)[source]

A user-created Request object.

Used to prepare a PreparedRequest, which is sent to the server.

Parameters:
  • method – HTTP method to use.

  • url – URL to send.

  • headers – dictionary of headers to send.

  • files – dictionary of {filename: fileobject} files to multipart upload.

  • data – the body to attach to the request. If a dictionary or list of tuples [(key, value)] is provided, form-encoding will take place.

  • json – json for the body to attach to the request (if files or data is not specified).

  • params – URL parameters to append to the URL. If a dictionary or list of tuples [(key, value)] is provided, form-encoding will take place.

  • auth – Auth handler or (user, pass) tuple.

  • cookies – dictionary or CookieJar of cookies to attach to this request.

  • hooks – dictionary of callback hooks, for internal usage.

Usage:

>>> import requests
>>> req = requests.Request('GET', 'https://httpbin.org/get')
>>> req.prepare()
<PreparedRequest [GET]>
deregister_hook(event, hook)

Deregister a previously registered hook. Returns True if the hook existed, False if not.

prepare()[source]

Constructs a PreparedRequest for transmission and returns it.

register_hook(event, hook)

Properly register a hook.