diff --git a/src/openai/_exceptions.py b/src/openai/_exceptions.py index 09016dfedb..20329eaf5e 100644 --- a/src/openai/_exceptions.py +++ b/src/openai/_exceptions.py @@ -58,7 +58,8 @@ def __init__(self, message: str, request: httpx.Request, *, body: object | None) self.body = body if is_dict(body): - self.code = cast(Any, construct_type(type_=Optional[str], value=body.get("code"))) + code = body.get("code") + self.code = str(code) if code is not None else None self.param = cast(Any, construct_type(type_=Optional[str], value=body.get("param"))) self.type = cast(Any, construct_type(type_=str, value=body.get("type"))) else: diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py new file mode 100644 index 0000000000..1ec90ea8e7 --- /dev/null +++ b/tests/test_exceptions.py @@ -0,0 +1,12 @@ +import httpx + +from openai import APIStatusError + + +def test_integer_error_code_is_coerced_to_string() -> None: + request = httpx.Request("GET", "https://api.openai.com/v1/models") + response = httpx.Response(404, request=request) + + error = APIStatusError("Not found", response=response, body={"code": 404}) + + assert error.code == "404"