Skip to content

Commit 9d06d7a

Browse files
docs: document raw responses (#197)
1 parent 865ea28 commit 9d06d7a

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ package main
4545

4646
import (
4747
"context"
48+
"fmt"
4849

4950
"github.com/openai/openai-go"
5051
"github.com/openai/openai-go/option"
@@ -525,6 +526,34 @@ client.Chat.Completions.New(
525526
)
526527
```
527528

529+
### Accessing raw response data (e.g. response headers)
530+
531+
You can access the raw HTTP response data by using the `option.WithResponseInto()` request option. This is useful when
532+
you need to examine response headers, status codes, or other details.
533+
534+
```go
535+
// Create a variable to store the HTTP response
536+
var response *http.Response
537+
chatCompletion, err := client.Chat.Completions.New(
538+
context.TODO(),
539+
openai.ChatCompletionNewParams{
540+
Messages: openai.F([]openai.ChatCompletionMessageParamUnion{openai.ChatCompletionUserMessageParam{
541+
Role: openai.F(openai.ChatCompletionUserMessageParamRoleUser),
542+
Content: openai.F([]openai.ChatCompletionContentPartUnionParam{openai.ChatCompletionContentPartTextParam{Text: openai.F("text"), Type: openai.F(openai.ChatCompletionContentPartTextTypeText)}}),
543+
}}),
544+
Model: openai.F(openai.ChatModelO3Mini),
545+
},
546+
option.WithResponseInto(&response),
547+
)
548+
if err != nil {
549+
// handle error
550+
}
551+
fmt.Printf("%+v\n", chatCompletion)
552+
553+
fmt.Printf("Status Code: %d\n", response.StatusCode)
554+
fmt.Printf("Headers: %+#v\n", response.Header)
555+
```
556+
528557
### Making custom/undocumented requests
529558

530559
This library is typed for convenient access to the documented API. If you need to access undocumented

usage_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestUsage(t *testing.T) {
2424
option.WithBaseURL(baseURL),
2525
option.WithAPIKey("My API Key"),
2626
)
27-
_, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
27+
chatCompletion, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
2828
Messages: openai.F([]openai.ChatCompletionMessageParamUnion{openai.ChatCompletionUserMessageParam{
2929
Role: openai.F(openai.ChatCompletionUserMessageParamRoleUser),
3030
Content: openai.F([]openai.ChatCompletionContentPartUnionParam{openai.ChatCompletionContentPartTextParam{Text: openai.F("text"), Type: openai.F(openai.ChatCompletionContentPartTextTypeText)}}),
@@ -34,4 +34,5 @@ func TestUsage(t *testing.T) {
3434
if err != nil {
3535
t.Error(err)
3636
}
37+
t.Logf("%+v\n", chatCompletion)
3738
}

0 commit comments

Comments
 (0)