--- /dev/null
+# class http\Message\Parser
+
+The parser which is underlying http\Message.
+
+## Changelog:
+
+| Version | Change
+|---------|--------
+| 2.2.0 | Added http\Message\Parser API
+
+## Constants:
+
+### Parser flags:
+
+* CLEANUP
+ Finish up parser at end of (incomplete) input.
+* DUMB_BODIES
+ Soak up the rest of input if no entity length is deducible.
+* EMPTY_REDIRECTS
+ Redirect messages do not contain any body despite of indication of such.
+* GREEDY
+ Continue parsing while input is available.
+
+### Parser states:
+
+* STATE_FAILURE
+ Parse failure.
+* STATE_START
+ Expecting HTTP info (request/response line) or headers.
+* STATE_HEADER
+ Parsing headers.
+* STATE_HEADER_DONE
+ Completed parsing headers.
+* STATE_BODY
+ Parsing the body.
+* STATE_BODY_DUMB
+ Soaking up all input as body.
+* STATE_BODY_LENGTH
+ Reading body as indicated by `Content-Lenght` or `Content-Range`.
+* STATE_BODY_CHUNKED
+ Parsing `chunked` encoded body.
+* STATE_BODY_DONE
+ Finished parsing the body.
+* STATE_DONE
+ Finished parsing the message.
--- /dev/null
+# int http\Message\Parser::getState()
+
+Retrieve the current state of the parser.
+See http\Message\Parser::STATE_* constants.
+
+## Params:
+
+None.
+
+## Returns:
+
+* int, http\Message\Parser::STATE_* constant.
+
+## Throws:
+
+* http\Exception\InvalidArgumentException
--- /dev/null
+# int http\Message\Parser::parse(string $data, int $flags, http\Message &$message)
+
+Parse a string.
+
+## Params:
+
+* string $data
+ The (part of the) message to parse.
+* int $flags
+ Any combination of [parser flags](http/Message/Parser#Parser.flags:).
+* http\Message &$message
+ The current state of the message parsed.
+
+## Returns:
+
+* int, http\Message\Parser::STATE_* constant.
+
+## Throws:
+
+* http\Exception\InvalidArgumentException
--- /dev/null
+# int http\Message\Parser::stream(resource $stream, int $flags, http\Message &$message)
+
+Parse a stream.
+
+## Params:
+
+* stream $resource
+ The message stream to parse from.
+* int $flags
+ Any combination of [parser flags](http/Message/Parser#Parser.flags:).
+* http\Message &$message
+ The current state of the message parsed.
+
+## Returns:
+
+* int, http\Message\Parser::STATE_* constant.
+
+## Throws:
+
+* http\Exception\InvalidArgumentException
+* http\Exception\UnexpectedValueException