Title: ResponseUtil
Published: May 20, 2026

---

# class ResponseUtil {}

## In this article

 * [Methods](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#methods)
 * [Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#source)
 * [Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#wp--skip-link--target)

Class with static utility methods to process HTTP responses.

## 󠀁[Methods](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#methods)󠁿

| Name | Description | 
| [ResponseUtil::throwIfNotSuccessful](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/throwifnotsuccessful/) | Throws an appropriate exception if the given response is not successful. |

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#source)󠁿

    ```php
    class ResponseUtil
    {
        /**
         * Throws an appropriate exception if the given response is not successful.
         *
         * This method checks the HTTP status code of the response and throws
         * the appropriate exception type based on the status code range:
         * - 3xx: RedirectException (redirect responses)
         * - 4xx: ClientException (client errors)
         * - 5xx: ServerException (server errors)
         * - Other unsuccessful responses: RuntimeException (invalid status codes)
         *
         * @since 0.1.0
         *
         * @param Response $response The HTTP response to check.
         * @throws RedirectException If the response indicates a redirect (3xx).
         * @throws ClientException If the response indicates a client error (4xx).
         * @throws ServerException If the response indicates a server error (5xx).
         * @throws \RuntimeException If the response has an invalid status code.
         */
        public static function throwIfNotSuccessful(Response $response): void
        {
            if ($response->isSuccessful()) {
                return;
            }
            $statusCode = $response->getStatusCode();
            // 3xx Redirect Responses
            if ($statusCode >= 300 && $statusCode < 400) {
                throw RedirectException::fromRedirectResponse($response);
            }
            // 4xx Client Errors
            if ($statusCode >= 400 && $statusCode < 500) {
                throw ClientException::fromClientErrorResponse($response);
            }
            // 5xx Server Errors
            if ($statusCode >= 500 && $statusCode < 600) {
                throw ServerException::fromServerErrorResponse($response);
            }
            throw new \RuntimeException(sprintf('Response returned invalid status code: %s', $response->getStatusCode()));
        }
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/php-ai-client/src/providers/http/util/responseutil.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/php-ai-client/src/Providers/Http/Util/ResponseUtil.php#L15)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/php-ai-client/src/Providers/Http/Util/ResponseUtil.php#L15-L55)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-http-util-responseutil/?output_format=md#changelog)󠁿

| Version | Description | 
| [0.1.0](https://developer.wordpress.org/reference/since/0.1.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwordpress-aiclient-providers-http-util-responseutil%2F)
before being able to contribute a note or feedback.