# openai/openai-go architecture

> Architecture diagram of the GitHub repository openai/openai-go, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/openai/openai-go
- Repository: https://github.com/openai/openai-go

## Overview

OpenAI Go API Library is a Go client SDK for calling OpenAI’s REST API. Its main workflow is an application configuring a client, submitting model input through a service such as Responses, sending an authenticated HTTP request, and receiving decoded output; streaming and multi-turn conversation APIs extend that workflow. The tree and README document broader audio, image, files, fine-tuning, vector-store, administrative, and realtime capabilities. Sampled service methods confirm request execution through request configuration, but most service wiring and transport internals were not sampled, so uncertain call links are omitted.

Main entry points: [`client.go`](https://github.com/openai/openai-go/blob/main/client.go) (API client), [`internal/requestconfig/requestconfig.go`](https://github.com/openai/openai-go/blob/main/internal/requestconfig/requestconfig.go) (Request execution), [`responses/response.go`](https://github.com/openai/openai-go/blob/main/responses/response.go) (Responses API), [`conversations/conversation.go`](https://github.com/openai/openai-go/blob/main/conversations/conversation.go) (Conversations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client setup"]
  node_client["API client<br/>[client.go]"]
end

subgraph group_api["Model APIs"]
  node_responses["Responses API<br/>[response.go]"]
  node_conversations["Conversations<br/>[conversation.go]"]
  node_chat["Chat completions<br/>[chatcompletion.go]"]
  node_media["Audio and images<br/>[audio.go]"]
  node_files["Files and uploads<br/>[file.go]"]
  node_training["Fine-tuning<br/>[finetuning.go]"]
  node_vector["Vector stores<br/>[vectorstore.go]"]
  node_admin["Admin services<br/>[admin.go]"]
end

subgraph group_realtime["Realtime and events"]
  node_live["Live sessions<br/>[live.go]"]
  node_realtime["Realtime sessions<br/>[realtime.go]"]
  node_webhooks["Webhook events<br/>[webhook.go]"]
end

subgraph group_transport["Request infrastructure"]
  node_request["Request execution<br/>[requestconfig.go]"]
  node_encoding["JSON encoding<br/>[encoder.go]"]
  node_streaming["Stream support<br/>[ssestream.go]"]
end

subgraph group_integrations["Provider integrations"]
  node_bedrock["Bedrock provider<br/>[bedrock.go]"]
end

node_app(("Go application"))
node_openai(("OpenAI API"))

node_app -->|"configures"| node_client
node_client -->|"exposes"| node_responses
node_client -->|"exposes"| node_conversations
node_client -->|"exposes"| node_chat
node_client -->|"exposes"| node_media
node_client -->|"exposes"| node_files
node_client -->|"exposes"| node_training
node_client -->|"exposes"| node_vector
node_client -->|"exposes"| node_admin
node_app -->|"submits input"| node_responses
node_responses -->|"executes request"| node_request
node_conversations -->|"executes request"| node_request
node_admin -->|"executes request"| node_request
node_request -->|"encodes payload"| node_encoding
node_request -->|"sends HTTP"| node_openai
node_openai -->|"returns response"| node_request
node_request -->|"decodes result"| node_responses
node_app -->|"opens session"| node_live
node_app -->|"opens session"| node_realtime
node_app -->|"verifies events"| node_webhooks
node_realtime -->|"connects"| node_openai
node_live -->|"connects"| node_openai
node_responses -.->|"streams output"| node_streaming
node_app -.->|"configures provider"| node_bedrock

click node_client "https://github.com/openai/openai-go/blob/main/client.go"
click node_responses "https://github.com/openai/openai-go/blob/main/responses/response.go"
click node_conversations "https://github.com/openai/openai-go/blob/main/conversations/conversation.go"
click node_chat "https://github.com/openai/openai-go/blob/main/chatcompletion.go"
click node_media "https://github.com/openai/openai-go/blob/main/audio.go"
click node_files "https://github.com/openai/openai-go/blob/main/file.go"
click node_training "https://github.com/openai/openai-go/blob/main/finetuning.go"
click node_vector "https://github.com/openai/openai-go/blob/main/vectorstore.go"
click node_admin "https://github.com/openai/openai-go/blob/main/admin.go"
click node_live "https://github.com/openai/openai-go/blob/main/live/live.go"
click node_realtime "https://github.com/openai/openai-go/blob/main/realtime/realtime.go"
click node_webhooks "https://github.com/openai/openai-go/blob/main/webhooks/webhook.go"
click node_request "https://github.com/openai/openai-go/blob/main/internal/requestconfig/requestconfig.go"
click node_encoding "https://github.com/openai/openai-go/blob/main/internal/apijson/encoder.go"
click node_streaming "https://github.com/openai/openai-go/blob/main/packages/ssestream/ssestream.go"
click node_bedrock "https://github.com/openai/openai-go/blob/main/bedrock/bedrock.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_client toneBlue
class node_responses,node_conversations,node_chat,node_media,node_files,node_training,node_vector,node_admin toneAmber
class node_live,node_realtime,node_webhooks,node_openai toneMint
class node_request,node_encoding,node_streaming toneRose
class node_bedrock,node_app toneIndigo
```

## Components

### Client setup

- [API client](https://github.com/openai/openai-go/blob/main/client.go): `client.go`

### Model APIs

- [Responses API](https://github.com/openai/openai-go/blob/main/responses/response.go): `responses/response.go`
- [Conversations](https://github.com/openai/openai-go/blob/main/conversations/conversation.go): `conversations/conversation.go`
- [Chat completions](https://github.com/openai/openai-go/blob/main/chatcompletion.go): `chatcompletion.go`
- [Audio and images](https://github.com/openai/openai-go/blob/main/audio.go): `audio.go`
- [Files and uploads](https://github.com/openai/openai-go/blob/main/file.go): `file.go`
- [Fine-tuning](https://github.com/openai/openai-go/blob/main/finetuning.go): `finetuning.go`
- [Vector stores](https://github.com/openai/openai-go/blob/main/vectorstore.go): `vectorstore.go`
- [Admin services](https://github.com/openai/openai-go/blob/main/admin.go): `admin.go`

### Realtime and events

- [Live sessions](https://github.com/openai/openai-go/blob/main/live/live.go): `live/live.go`
- [Realtime sessions](https://github.com/openai/openai-go/blob/main/realtime/realtime.go): `realtime/realtime.go`
- [Webhook events](https://github.com/openai/openai-go/blob/main/webhooks/webhook.go): `webhooks/webhook.go`

### Request infrastructure

- [Request execution](https://github.com/openai/openai-go/blob/main/internal/requestconfig/requestconfig.go): `internal/requestconfig/requestconfig.go`
- [JSON encoding](https://github.com/openai/openai-go/blob/main/internal/apijson/encoder.go): `internal/apijson/encoder.go`
- [Stream support](https://github.com/openai/openai-go/blob/main/packages/ssestream/ssestream.go): `packages/ssestream/ssestream.go`

### Provider integrations

- [Bedrock provider](https://github.com/openai/openai-go/blob/main/bedrock/bedrock.go): `bedrock/bedrock.go`

### Other components

- **Go application**
- **OpenAI API**

## Connections

- Go application → API client: configures
- API client → Responses API: exposes
- API client → Conversations: exposes
- API client → Chat completions: exposes
- API client → Audio and images: exposes
- API client → Files and uploads: exposes
- API client → Fine-tuning: exposes
- API client → Vector stores: exposes
- API client → Admin services: exposes
- Go application → Responses API: submits input
- Responses API → Request execution: executes request
- Conversations → Request execution: executes request
- Admin services → Request execution: executes request
- Request execution → JSON encoding: encodes payload
- Request execution → OpenAI API: sends HTTP
- OpenAI API → Request execution: returns response
- Request execution → Responses API: decodes result
- Go application → Live sessions: opens session
- Go application → Realtime sessions: opens session
- Go application → Webhook events: verifies events
- Realtime sessions → OpenAI API: connects
- Live sessions → OpenAI API: connects
- Responses API → Stream support: streams output
- Go application → Bedrock provider: configures provider
