This is a Swift package for the OpenAI public API. It is generated from the official OpenAI OpenAPI specification using Swift OpenAPI Generator.
OpenAI's OpenAPI specification has some issues. Some of them are fixed in the download script with string replacements.
For example, duplicate models are removed, type mismatches are fixed.
- The server-sent-events response type for chat completions is now supported
- The original API document has only 200 status documented as response. We add all the possible error responses with decodable error message payload, so that you can know what the error is.
AuthenticationMiddlewareis provided to add API key authentication.- Check out Tests
Add the following to your Package.swift file:
dependencies: [
.package(url: "https://github.com/atacan/swift-openai-api", from: "0.1.0"),
],
targets: [
.target(name: "YourTarget", dependencies: [
.product(name: "OpenAIUrlSessionClient", package: "swift-openai-api"),
// .product(name: "OpenAIAsyncHTTPClient", package: "swift-openai-api"),
]),
]First incoming message is a transcription_session.created event.
{
"type": "transcription_session.created",
"event_id": "event_BkolR18obdJWg4a3bKuhW",
"session": {
"id": "sess_BkolRXnnaIXV7cV3lu7Bv",
"object": "realtime.transcription_session",
"expires_at": 1750499725,
"input_audio_noise_reduction": null,
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"prefix_padding_ms": 300,
"silence_duration_ms": 200
},
"input_audio_format": "pcm16",
"input_audio_transcription": null,
"client_secret": null,
"include": null
}
}Run the following to find the type value for each RealtimeServerEvent and use them to create the mapping in the overlay.json
yq '.components.schemas | .[] | select(key | test("RealtimeServerEvent.*")) | .properties.type.enum[]' openapi.yaml