Full Code of openai/openai-python for AI

main acd0c54d8a68 cached
1262 files
5.2 MB
1.4M tokens
6484 symbols
2 requests
Download .txt
Showing preview only (5,689K chars total). Download the full file or copy to clipboard to get everything.
Repository: openai/openai-python
Branch: main
Commit: acd0c54d8a68
Files: 1262
Total size: 5.2 MB

Directory structure:
gitextract_npo499yb/

├── .devcontainer/
│   ├── Dockerfile
│   └── devcontainer.json
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── ci.yml
│       ├── create-releases.yml
│       ├── detect-breaking-changes.yml
│       ├── publish-pypi.yml
│       └── release-doctor.yml
├── .gitignore
├── .inline-snapshot/
│   └── external/
│       └── .gitignore
├── .python-version
├── .release-please-manifest.json
├── .stats.yml
├── .vscode/
│   └── settings.json
├── Brewfile
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── api.md
├── bin/
│   ├── check-release-environment
│   └── publish-pypi
├── examples/
│   ├── .keep
│   ├── async_demo.py
│   ├── audio.py
│   ├── azure.py
│   ├── azure_ad.py
│   ├── demo.py
│   ├── generate_file.sh
│   ├── image_stream.py
│   ├── module_client.py
│   ├── parsing.py
│   ├── parsing_stream.py
│   ├── parsing_tools.py
│   ├── parsing_tools_stream.py
│   ├── picture.py
│   ├── realtime/
│   │   ├── audio_util.py
│   │   ├── azure_realtime.py
│   │   ├── push_to_talk_app.py
│   │   └── realtime.py
│   ├── responses/
│   │   ├── __init__.py
│   │   ├── background.py
│   │   ├── background_async.py
│   │   ├── background_streaming.py
│   │   ├── background_streaming_async.py
│   │   ├── streaming.py
│   │   ├── streaming_tools.py
│   │   ├── structured_outputs.py
│   │   ├── structured_outputs_tools.py
│   │   └── websocket.py
│   ├── responses_input_tokens.py
│   ├── speech_to_text.py
│   ├── streaming.py
│   ├── text_to_speech.py
│   ├── uploads.py
│   └── video.py
├── helpers.md
├── noxfile.py
├── pyproject.toml
├── release-please-config.json
├── scripts/
│   ├── bootstrap
│   ├── detect-breaking-changes
│   ├── detect-breaking-changes.py
│   ├── format
│   ├── lint
│   ├── mock
│   ├── pyrightconfig.breaking-changes.json
│   ├── run-pyright
│   ├── test
│   └── utils/
│       ├── ruffen-docs.py
│       └── upload-artifact.sh
├── src/
│   └── openai/
│       ├── __init__.py
│       ├── __main__.py
│       ├── _base_client.py
│       ├── _client.py
│       ├── _compat.py
│       ├── _constants.py
│       ├── _exceptions.py
│       ├── _extras/
│       │   ├── __init__.py
│       │   ├── _common.py
│       │   ├── numpy_proxy.py
│       │   ├── pandas_proxy.py
│       │   └── sounddevice_proxy.py
│       ├── _files.py
│       ├── _legacy_response.py
│       ├── _models.py
│       ├── _module_client.py
│       ├── _qs.py
│       ├── _resource.py
│       ├── _response.py
│       ├── _streaming.py
│       ├── _types.py
│       ├── _utils/
│       │   ├── __init__.py
│       │   ├── _compat.py
│       │   ├── _datetime_parse.py
│       │   ├── _json.py
│       │   ├── _logs.py
│       │   ├── _proxy.py
│       │   ├── _reflection.py
│       │   ├── _resources_proxy.py
│       │   ├── _streams.py
│       │   ├── _sync.py
│       │   ├── _transform.py
│       │   ├── _typing.py
│       │   └── _utils.py
│       ├── _version.py
│       ├── cli/
│       │   ├── __init__.py
│       │   ├── _api/
│       │   │   ├── __init__.py
│       │   │   ├── _main.py
│       │   │   ├── audio.py
│       │   │   ├── chat/
│       │   │   │   ├── __init__.py
│       │   │   │   └── completions.py
│       │   │   ├── completions.py
│       │   │   ├── files.py
│       │   │   ├── fine_tuning/
│       │   │   │   ├── __init__.py
│       │   │   │   └── jobs.py
│       │   │   ├── image.py
│       │   │   └── models.py
│       │   ├── _cli.py
│       │   ├── _errors.py
│       │   ├── _models.py
│       │   ├── _progress.py
│       │   ├── _tools/
│       │   │   ├── __init__.py
│       │   │   ├── _main.py
│       │   │   ├── fine_tunes.py
│       │   │   └── migrate.py
│       │   └── _utils.py
│       ├── helpers/
│       │   ├── __init__.py
│       │   ├── local_audio_player.py
│       │   └── microphone.py
│       ├── lib/
│       │   ├── .keep
│       │   ├── __init__.py
│       │   ├── _old_api.py
│       │   ├── _parsing/
│       │   │   ├── __init__.py
│       │   │   ├── _completions.py
│       │   │   └── _responses.py
│       │   ├── _pydantic.py
│       │   ├── _realtime.py
│       │   ├── _tools.py
│       │   ├── _validators.py
│       │   ├── azure.py
│       │   └── streaming/
│       │       ├── __init__.py
│       │       ├── _assistants.py
│       │       ├── _deltas.py
│       │       ├── chat/
│       │       │   ├── __init__.py
│       │       │   ├── _completions.py
│       │       │   ├── _events.py
│       │       │   └── _types.py
│       │       └── responses/
│       │           ├── __init__.py
│       │           ├── _events.py
│       │           ├── _responses.py
│       │           └── _types.py
│       ├── pagination.py
│       ├── py.typed
│       ├── resources/
│       │   ├── __init__.py
│       │   ├── audio/
│       │   │   ├── __init__.py
│       │   │   ├── audio.py
│       │   │   ├── speech.py
│       │   │   ├── transcriptions.py
│       │   │   └── translations.py
│       │   ├── batches.py
│       │   ├── beta/
│       │   │   ├── __init__.py
│       │   │   ├── assistants.py
│       │   │   ├── beta.py
│       │   │   ├── chatkit/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── chatkit.py
│       │   │   │   ├── sessions.py
│       │   │   │   └── threads.py
│       │   │   ├── realtime/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── realtime.py
│       │   │   │   ├── sessions.py
│       │   │   │   └── transcription_sessions.py
│       │   │   └── threads/
│       │   │       ├── __init__.py
│       │   │       ├── messages.py
│       │   │       ├── runs/
│       │   │       │   ├── __init__.py
│       │   │       │   ├── runs.py
│       │   │       │   └── steps.py
│       │   │       └── threads.py
│       │   ├── chat/
│       │   │   ├── __init__.py
│       │   │   ├── chat.py
│       │   │   └── completions/
│       │   │       ├── __init__.py
│       │   │       ├── completions.py
│       │   │       └── messages.py
│       │   ├── completions.py
│       │   ├── containers/
│       │   │   ├── __init__.py
│       │   │   ├── containers.py
│       │   │   └── files/
│       │   │       ├── __init__.py
│       │   │       ├── content.py
│       │   │       └── files.py
│       │   ├── conversations/
│       │   │   ├── __init__.py
│       │   │   ├── api.md
│       │   │   ├── conversations.py
│       │   │   └── items.py
│       │   ├── embeddings.py
│       │   ├── evals/
│       │   │   ├── __init__.py
│       │   │   ├── evals.py
│       │   │   └── runs/
│       │   │       ├── __init__.py
│       │   │       ├── output_items.py
│       │   │       └── runs.py
│       │   ├── files.py
│       │   ├── fine_tuning/
│       │   │   ├── __init__.py
│       │   │   ├── alpha/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── alpha.py
│       │   │   │   └── graders.py
│       │   │   ├── checkpoints/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── checkpoints.py
│       │   │   │   └── permissions.py
│       │   │   ├── fine_tuning.py
│       │   │   └── jobs/
│       │   │       ├── __init__.py
│       │   │       ├── checkpoints.py
│       │   │       └── jobs.py
│       │   ├── images.py
│       │   ├── models.py
│       │   ├── moderations.py
│       │   ├── realtime/
│       │   │   ├── __init__.py
│       │   │   ├── api.md
│       │   │   ├── calls.py
│       │   │   ├── client_secrets.py
│       │   │   └── realtime.py
│       │   ├── responses/
│       │   │   ├── __init__.py
│       │   │   ├── api.md
│       │   │   ├── input_items.py
│       │   │   ├── input_tokens.py
│       │   │   └── responses.py
│       │   ├── skills/
│       │   │   ├── __init__.py
│       │   │   ├── content.py
│       │   │   ├── skills.py
│       │   │   └── versions/
│       │   │       ├── __init__.py
│       │   │       ├── content.py
│       │   │       └── versions.py
│       │   ├── uploads/
│       │   │   ├── __init__.py
│       │   │   ├── parts.py
│       │   │   └── uploads.py
│       │   ├── vector_stores/
│       │   │   ├── __init__.py
│       │   │   ├── file_batches.py
│       │   │   ├── files.py
│       │   │   └── vector_stores.py
│       │   ├── videos.py
│       │   └── webhooks/
│       │       ├── __init__.py
│       │       ├── api.md
│       │       └── webhooks.py
│       ├── types/
│       │   ├── __init__.py
│       │   ├── audio/
│       │   │   ├── __init__.py
│       │   │   ├── speech_create_params.py
│       │   │   ├── speech_model.py
│       │   │   ├── transcription.py
│       │   │   ├── transcription_create_params.py
│       │   │   ├── transcription_create_response.py
│       │   │   ├── transcription_diarized.py
│       │   │   ├── transcription_diarized_segment.py
│       │   │   ├── transcription_include.py
│       │   │   ├── transcription_segment.py
│       │   │   ├── transcription_stream_event.py
│       │   │   ├── transcription_text_delta_event.py
│       │   │   ├── transcription_text_done_event.py
│       │   │   ├── transcription_text_segment_event.py
│       │   │   ├── transcription_verbose.py
│       │   │   ├── transcription_word.py
│       │   │   ├── translation.py
│       │   │   ├── translation_create_params.py
│       │   │   ├── translation_create_response.py
│       │   │   └── translation_verbose.py
│       │   ├── audio_model.py
│       │   ├── audio_response_format.py
│       │   ├── auto_file_chunking_strategy_param.py
│       │   ├── batch.py
│       │   ├── batch_create_params.py
│       │   ├── batch_error.py
│       │   ├── batch_list_params.py
│       │   ├── batch_request_counts.py
│       │   ├── batch_usage.py
│       │   ├── beta/
│       │   │   ├── __init__.py
│       │   │   ├── assistant.py
│       │   │   ├── assistant_create_params.py
│       │   │   ├── assistant_deleted.py
│       │   │   ├── assistant_list_params.py
│       │   │   ├── assistant_response_format_option.py
│       │   │   ├── assistant_response_format_option_param.py
│       │   │   ├── assistant_stream_event.py
│       │   │   ├── assistant_tool.py
│       │   │   ├── assistant_tool_choice.py
│       │   │   ├── assistant_tool_choice_function.py
│       │   │   ├── assistant_tool_choice_function_param.py
│       │   │   ├── assistant_tool_choice_option.py
│       │   │   ├── assistant_tool_choice_option_param.py
│       │   │   ├── assistant_tool_choice_param.py
│       │   │   ├── assistant_tool_param.py
│       │   │   ├── assistant_update_params.py
│       │   │   ├── chat/
│       │   │   │   └── __init__.py
│       │   │   ├── chatkit/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── chat_session.py
│       │   │   │   ├── chat_session_automatic_thread_titling.py
│       │   │   │   ├── chat_session_chatkit_configuration.py
│       │   │   │   ├── chat_session_chatkit_configuration_param.py
│       │   │   │   ├── chat_session_expires_after_param.py
│       │   │   │   ├── chat_session_file_upload.py
│       │   │   │   ├── chat_session_history.py
│       │   │   │   ├── chat_session_rate_limits.py
│       │   │   │   ├── chat_session_rate_limits_param.py
│       │   │   │   ├── chat_session_status.py
│       │   │   │   ├── chat_session_workflow_param.py
│       │   │   │   ├── chatkit_attachment.py
│       │   │   │   ├── chatkit_response_output_text.py
│       │   │   │   ├── chatkit_thread.py
│       │   │   │   ├── chatkit_thread_assistant_message_item.py
│       │   │   │   ├── chatkit_thread_item_list.py
│       │   │   │   ├── chatkit_thread_user_message_item.py
│       │   │   │   ├── chatkit_widget_item.py
│       │   │   │   ├── session_create_params.py
│       │   │   │   ├── thread_delete_response.py
│       │   │   │   ├── thread_list_items_params.py
│       │   │   │   └── thread_list_params.py
│       │   │   ├── chatkit_workflow.py
│       │   │   ├── code_interpreter_tool.py
│       │   │   ├── code_interpreter_tool_param.py
│       │   │   ├── file_search_tool.py
│       │   │   ├── file_search_tool_param.py
│       │   │   ├── function_tool.py
│       │   │   ├── function_tool_param.py
│       │   │   ├── realtime/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── conversation_created_event.py
│       │   │   │   ├── conversation_item.py
│       │   │   │   ├── conversation_item_content.py
│       │   │   │   ├── conversation_item_content_param.py
│       │   │   │   ├── conversation_item_create_event.py
│       │   │   │   ├── conversation_item_create_event_param.py
│       │   │   │   ├── conversation_item_created_event.py
│       │   │   │   ├── conversation_item_delete_event.py
│       │   │   │   ├── conversation_item_delete_event_param.py
│       │   │   │   ├── conversation_item_deleted_event.py
│       │   │   │   ├── conversation_item_input_audio_transcription_completed_event.py
│       │   │   │   ├── conversation_item_input_audio_transcription_delta_event.py
│       │   │   │   ├── conversation_item_input_audio_transcription_failed_event.py
│       │   │   │   ├── conversation_item_param.py
│       │   │   │   ├── conversation_item_retrieve_event.py
│       │   │   │   ├── conversation_item_retrieve_event_param.py
│       │   │   │   ├── conversation_item_truncate_event.py
│       │   │   │   ├── conversation_item_truncate_event_param.py
│       │   │   │   ├── conversation_item_truncated_event.py
│       │   │   │   ├── conversation_item_with_reference.py
│       │   │   │   ├── conversation_item_with_reference_param.py
│       │   │   │   ├── error_event.py
│       │   │   │   ├── input_audio_buffer_append_event.py
│       │   │   │   ├── input_audio_buffer_append_event_param.py
│       │   │   │   ├── input_audio_buffer_clear_event.py
│       │   │   │   ├── input_audio_buffer_clear_event_param.py
│       │   │   │   ├── input_audio_buffer_cleared_event.py
│       │   │   │   ├── input_audio_buffer_commit_event.py
│       │   │   │   ├── input_audio_buffer_commit_event_param.py
│       │   │   │   ├── input_audio_buffer_committed_event.py
│       │   │   │   ├── input_audio_buffer_speech_started_event.py
│       │   │   │   ├── input_audio_buffer_speech_stopped_event.py
│       │   │   │   ├── rate_limits_updated_event.py
│       │   │   │   ├── realtime_client_event.py
│       │   │   │   ├── realtime_client_event_param.py
│       │   │   │   ├── realtime_connect_params.py
│       │   │   │   ├── realtime_response.py
│       │   │   │   ├── realtime_response_status.py
│       │   │   │   ├── realtime_response_usage.py
│       │   │   │   ├── realtime_server_event.py
│       │   │   │   ├── response_audio_delta_event.py
│       │   │   │   ├── response_audio_done_event.py
│       │   │   │   ├── response_audio_transcript_delta_event.py
│       │   │   │   ├── response_audio_transcript_done_event.py
│       │   │   │   ├── response_cancel_event.py
│       │   │   │   ├── response_cancel_event_param.py
│       │   │   │   ├── response_content_part_added_event.py
│       │   │   │   ├── response_content_part_done_event.py
│       │   │   │   ├── response_create_event.py
│       │   │   │   ├── response_create_event_param.py
│       │   │   │   ├── response_created_event.py
│       │   │   │   ├── response_done_event.py
│       │   │   │   ├── response_function_call_arguments_delta_event.py
│       │   │   │   ├── response_function_call_arguments_done_event.py
│       │   │   │   ├── response_output_item_added_event.py
│       │   │   │   ├── response_output_item_done_event.py
│       │   │   │   ├── response_text_delta_event.py
│       │   │   │   ├── response_text_done_event.py
│       │   │   │   ├── session.py
│       │   │   │   ├── session_create_params.py
│       │   │   │   ├── session_create_response.py
│       │   │   │   ├── session_created_event.py
│       │   │   │   ├── session_update_event.py
│       │   │   │   ├── session_update_event_param.py
│       │   │   │   ├── session_updated_event.py
│       │   │   │   ├── transcription_session.py
│       │   │   │   ├── transcription_session_create_params.py
│       │   │   │   ├── transcription_session_update.py
│       │   │   │   ├── transcription_session_update_param.py
│       │   │   │   └── transcription_session_updated_event.py
│       │   │   ├── thread.py
│       │   │   ├── thread_create_and_run_params.py
│       │   │   ├── thread_create_params.py
│       │   │   ├── thread_deleted.py
│       │   │   ├── thread_update_params.py
│       │   │   └── threads/
│       │   │       ├── __init__.py
│       │   │       ├── annotation.py
│       │   │       ├── annotation_delta.py
│       │   │       ├── file_citation_annotation.py
│       │   │       ├── file_citation_delta_annotation.py
│       │   │       ├── file_path_annotation.py
│       │   │       ├── file_path_delta_annotation.py
│       │   │       ├── image_file.py
│       │   │       ├── image_file_content_block.py
│       │   │       ├── image_file_content_block_param.py
│       │   │       ├── image_file_delta.py
│       │   │       ├── image_file_delta_block.py
│       │   │       ├── image_file_param.py
│       │   │       ├── image_url.py
│       │   │       ├── image_url_content_block.py
│       │   │       ├── image_url_content_block_param.py
│       │   │       ├── image_url_delta.py
│       │   │       ├── image_url_delta_block.py
│       │   │       ├── image_url_param.py
│       │   │       ├── message.py
│       │   │       ├── message_content.py
│       │   │       ├── message_content_delta.py
│       │   │       ├── message_content_part_param.py
│       │   │       ├── message_create_params.py
│       │   │       ├── message_deleted.py
│       │   │       ├── message_delta.py
│       │   │       ├── message_delta_event.py
│       │   │       ├── message_list_params.py
│       │   │       ├── message_update_params.py
│       │   │       ├── refusal_content_block.py
│       │   │       ├── refusal_delta_block.py
│       │   │       ├── required_action_function_tool_call.py
│       │   │       ├── run.py
│       │   │       ├── run_create_params.py
│       │   │       ├── run_list_params.py
│       │   │       ├── run_status.py
│       │   │       ├── run_submit_tool_outputs_params.py
│       │   │       ├── run_update_params.py
│       │   │       ├── runs/
│       │   │       │   ├── __init__.py
│       │   │       │   ├── code_interpreter_logs.py
│       │   │       │   ├── code_interpreter_output_image.py
│       │   │       │   ├── code_interpreter_tool_call.py
│       │   │       │   ├── code_interpreter_tool_call_delta.py
│       │   │       │   ├── file_search_tool_call.py
│       │   │       │   ├── file_search_tool_call_delta.py
│       │   │       │   ├── function_tool_call.py
│       │   │       │   ├── function_tool_call_delta.py
│       │   │       │   ├── message_creation_step_details.py
│       │   │       │   ├── run_step.py
│       │   │       │   ├── run_step_delta.py
│       │   │       │   ├── run_step_delta_event.py
│       │   │       │   ├── run_step_delta_message_delta.py
│       │   │       │   ├── run_step_include.py
│       │   │       │   ├── step_list_params.py
│       │   │       │   ├── step_retrieve_params.py
│       │   │       │   ├── tool_call.py
│       │   │       │   ├── tool_call_delta.py
│       │   │       │   ├── tool_call_delta_object.py
│       │   │       │   └── tool_calls_step_details.py
│       │   │       ├── text.py
│       │   │       ├── text_content_block.py
│       │   │       ├── text_content_block_param.py
│       │   │       ├── text_delta.py
│       │   │       └── text_delta_block.py
│       │   ├── chat/
│       │   │   ├── __init__.py
│       │   │   ├── chat_completion.py
│       │   │   ├── chat_completion_allowed_tool_choice_param.py
│       │   │   ├── chat_completion_allowed_tools_param.py
│       │   │   ├── chat_completion_assistant_message_param.py
│       │   │   ├── chat_completion_audio.py
│       │   │   ├── chat_completion_audio_param.py
│       │   │   ├── chat_completion_chunk.py
│       │   │   ├── chat_completion_content_part_image.py
│       │   │   ├── chat_completion_content_part_image_param.py
│       │   │   ├── chat_completion_content_part_input_audio_param.py
│       │   │   ├── chat_completion_content_part_param.py
│       │   │   ├── chat_completion_content_part_refusal_param.py
│       │   │   ├── chat_completion_content_part_text.py
│       │   │   ├── chat_completion_content_part_text_param.py
│       │   │   ├── chat_completion_custom_tool_param.py
│       │   │   ├── chat_completion_deleted.py
│       │   │   ├── chat_completion_developer_message_param.py
│       │   │   ├── chat_completion_function_call_option_param.py
│       │   │   ├── chat_completion_function_message_param.py
│       │   │   ├── chat_completion_function_tool.py
│       │   │   ├── chat_completion_function_tool_param.py
│       │   │   ├── chat_completion_message.py
│       │   │   ├── chat_completion_message_custom_tool_call.py
│       │   │   ├── chat_completion_message_custom_tool_call_param.py
│       │   │   ├── chat_completion_message_function_tool_call.py
│       │   │   ├── chat_completion_message_function_tool_call_param.py
│       │   │   ├── chat_completion_message_param.py
│       │   │   ├── chat_completion_message_tool_call.py
│       │   │   ├── chat_completion_message_tool_call_param.py
│       │   │   ├── chat_completion_message_tool_call_union_param.py
│       │   │   ├── chat_completion_modality.py
│       │   │   ├── chat_completion_named_tool_choice_custom_param.py
│       │   │   ├── chat_completion_named_tool_choice_param.py
│       │   │   ├── chat_completion_prediction_content_param.py
│       │   │   ├── chat_completion_reasoning_effort.py
│       │   │   ├── chat_completion_role.py
│       │   │   ├── chat_completion_store_message.py
│       │   │   ├── chat_completion_stream_options_param.py
│       │   │   ├── chat_completion_system_message_param.py
│       │   │   ├── chat_completion_token_logprob.py
│       │   │   ├── chat_completion_tool_choice_option_param.py
│       │   │   ├── chat_completion_tool_message_param.py
│       │   │   ├── chat_completion_tool_param.py
│       │   │   ├── chat_completion_tool_union_param.py
│       │   │   ├── chat_completion_user_message_param.py
│       │   │   ├── completion_create_params.py
│       │   │   ├── completion_list_params.py
│       │   │   ├── completion_update_params.py
│       │   │   ├── completions/
│       │   │   │   ├── __init__.py
│       │   │   │   └── message_list_params.py
│       │   │   ├── parsed_chat_completion.py
│       │   │   └── parsed_function_tool_call.py
│       │   ├── chat_model.py
│       │   ├── completion.py
│       │   ├── completion_choice.py
│       │   ├── completion_create_params.py
│       │   ├── completion_usage.py
│       │   ├── container_create_params.py
│       │   ├── container_create_response.py
│       │   ├── container_list_params.py
│       │   ├── container_list_response.py
│       │   ├── container_retrieve_response.py
│       │   ├── containers/
│       │   │   ├── __init__.py
│       │   │   ├── file_create_params.py
│       │   │   ├── file_create_response.py
│       │   │   ├── file_list_params.py
│       │   │   ├── file_list_response.py
│       │   │   ├── file_retrieve_response.py
│       │   │   └── files/
│       │   │       └── __init__.py
│       │   ├── conversations/
│       │   │   ├── __init__.py
│       │   │   ├── computer_screenshot_content.py
│       │   │   ├── conversation.py
│       │   │   ├── conversation_create_params.py
│       │   │   ├── conversation_deleted_resource.py
│       │   │   ├── conversation_item.py
│       │   │   ├── conversation_item_list.py
│       │   │   ├── conversation_update_params.py
│       │   │   ├── input_file_content.py
│       │   │   ├── input_file_content_param.py
│       │   │   ├── input_image_content.py
│       │   │   ├── input_image_content_param.py
│       │   │   ├── input_text_content.py
│       │   │   ├── input_text_content_param.py
│       │   │   ├── item_create_params.py
│       │   │   ├── item_list_params.py
│       │   │   ├── item_retrieve_params.py
│       │   │   ├── message.py
│       │   │   ├── output_text_content.py
│       │   │   ├── output_text_content_param.py
│       │   │   ├── refusal_content.py
│       │   │   ├── refusal_content_param.py
│       │   │   ├── summary_text_content.py
│       │   │   └── text_content.py
│       │   ├── create_embedding_response.py
│       │   ├── deleted_skill.py
│       │   ├── embedding.py
│       │   ├── embedding_create_params.py
│       │   ├── embedding_model.py
│       │   ├── eval_create_params.py
│       │   ├── eval_create_response.py
│       │   ├── eval_custom_data_source_config.py
│       │   ├── eval_delete_response.py
│       │   ├── eval_list_params.py
│       │   ├── eval_list_response.py
│       │   ├── eval_retrieve_response.py
│       │   ├── eval_stored_completions_data_source_config.py
│       │   ├── eval_update_params.py
│       │   ├── eval_update_response.py
│       │   ├── evals/
│       │   │   ├── __init__.py
│       │   │   ├── create_eval_completions_run_data_source.py
│       │   │   ├── create_eval_completions_run_data_source_param.py
│       │   │   ├── create_eval_jsonl_run_data_source.py
│       │   │   ├── create_eval_jsonl_run_data_source_param.py
│       │   │   ├── eval_api_error.py
│       │   │   ├── run_cancel_response.py
│       │   │   ├── run_create_params.py
│       │   │   ├── run_create_response.py
│       │   │   ├── run_delete_response.py
│       │   │   ├── run_list_params.py
│       │   │   ├── run_list_response.py
│       │   │   ├── run_retrieve_response.py
│       │   │   └── runs/
│       │   │       ├── __init__.py
│       │   │       ├── output_item_list_params.py
│       │   │       ├── output_item_list_response.py
│       │   │       └── output_item_retrieve_response.py
│       │   ├── file_chunking_strategy.py
│       │   ├── file_chunking_strategy_param.py
│       │   ├── file_content.py
│       │   ├── file_create_params.py
│       │   ├── file_deleted.py
│       │   ├── file_list_params.py
│       │   ├── file_object.py
│       │   ├── file_purpose.py
│       │   ├── fine_tuning/
│       │   │   ├── __init__.py
│       │   │   ├── alpha/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── grader_run_params.py
│       │   │   │   ├── grader_run_response.py
│       │   │   │   ├── grader_validate_params.py
│       │   │   │   └── grader_validate_response.py
│       │   │   ├── checkpoints/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── permission_create_params.py
│       │   │   │   ├── permission_create_response.py
│       │   │   │   ├── permission_delete_response.py
│       │   │   │   ├── permission_list_params.py
│       │   │   │   ├── permission_list_response.py
│       │   │   │   ├── permission_retrieve_params.py
│       │   │   │   └── permission_retrieve_response.py
│       │   │   ├── dpo_hyperparameters.py
│       │   │   ├── dpo_hyperparameters_param.py
│       │   │   ├── dpo_method.py
│       │   │   ├── dpo_method_param.py
│       │   │   ├── fine_tuning_job.py
│       │   │   ├── fine_tuning_job_event.py
│       │   │   ├── fine_tuning_job_integration.py
│       │   │   ├── fine_tuning_job_wandb_integration.py
│       │   │   ├── fine_tuning_job_wandb_integration_object.py
│       │   │   ├── job_create_params.py
│       │   │   ├── job_list_events_params.py
│       │   │   ├── job_list_params.py
│       │   │   ├── jobs/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── checkpoint_list_params.py
│       │   │   │   └── fine_tuning_job_checkpoint.py
│       │   │   ├── reinforcement_hyperparameters.py
│       │   │   ├── reinforcement_hyperparameters_param.py
│       │   │   ├── reinforcement_method.py
│       │   │   ├── reinforcement_method_param.py
│       │   │   ├── supervised_hyperparameters.py
│       │   │   ├── supervised_hyperparameters_param.py
│       │   │   ├── supervised_method.py
│       │   │   └── supervised_method_param.py
│       │   ├── graders/
│       │   │   ├── __init__.py
│       │   │   ├── grader_inputs.py
│       │   │   ├── grader_inputs_param.py
│       │   │   ├── label_model_grader.py
│       │   │   ├── label_model_grader_param.py
│       │   │   ├── multi_grader.py
│       │   │   ├── multi_grader_param.py
│       │   │   ├── python_grader.py
│       │   │   ├── python_grader_param.py
│       │   │   ├── score_model_grader.py
│       │   │   ├── score_model_grader_param.py
│       │   │   ├── string_check_grader.py
│       │   │   ├── string_check_grader_param.py
│       │   │   ├── text_similarity_grader.py
│       │   │   └── text_similarity_grader_param.py
│       │   ├── image.py
│       │   ├── image_create_variation_params.py
│       │   ├── image_edit_completed_event.py
│       │   ├── image_edit_params.py
│       │   ├── image_edit_partial_image_event.py
│       │   ├── image_edit_stream_event.py
│       │   ├── image_gen_completed_event.py
│       │   ├── image_gen_partial_image_event.py
│       │   ├── image_gen_stream_event.py
│       │   ├── image_generate_params.py
│       │   ├── image_input_reference_param.py
│       │   ├── image_model.py
│       │   ├── images_response.py
│       │   ├── model.py
│       │   ├── model_deleted.py
│       │   ├── moderation.py
│       │   ├── moderation_create_params.py
│       │   ├── moderation_create_response.py
│       │   ├── moderation_image_url_input_param.py
│       │   ├── moderation_model.py
│       │   ├── moderation_multi_modal_input_param.py
│       │   ├── moderation_text_input_param.py
│       │   ├── other_file_chunking_strategy_object.py
│       │   ├── realtime/
│       │   │   ├── __init__.py
│       │   │   ├── audio_transcription.py
│       │   │   ├── audio_transcription_param.py
│       │   │   ├── call_accept_params.py
│       │   │   ├── call_create_params.py
│       │   │   ├── call_refer_params.py
│       │   │   ├── call_reject_params.py
│       │   │   ├── client_secret_create_params.py
│       │   │   ├── client_secret_create_response.py
│       │   │   ├── conversation_created_event.py
│       │   │   ├── conversation_item.py
│       │   │   ├── conversation_item_added.py
│       │   │   ├── conversation_item_create_event.py
│       │   │   ├── conversation_item_create_event_param.py
│       │   │   ├── conversation_item_created_event.py
│       │   │   ├── conversation_item_delete_event.py
│       │   │   ├── conversation_item_delete_event_param.py
│       │   │   ├── conversation_item_deleted_event.py
│       │   │   ├── conversation_item_done.py
│       │   │   ├── conversation_item_input_audio_transcription_completed_event.py
│       │   │   ├── conversation_item_input_audio_transcription_delta_event.py
│       │   │   ├── conversation_item_input_audio_transcription_failed_event.py
│       │   │   ├── conversation_item_input_audio_transcription_segment.py
│       │   │   ├── conversation_item_param.py
│       │   │   ├── conversation_item_retrieve_event.py
│       │   │   ├── conversation_item_retrieve_event_param.py
│       │   │   ├── conversation_item_truncate_event.py
│       │   │   ├── conversation_item_truncate_event_param.py
│       │   │   ├── conversation_item_truncated_event.py
│       │   │   ├── input_audio_buffer_append_event.py
│       │   │   ├── input_audio_buffer_append_event_param.py
│       │   │   ├── input_audio_buffer_clear_event.py
│       │   │   ├── input_audio_buffer_clear_event_param.py
│       │   │   ├── input_audio_buffer_cleared_event.py
│       │   │   ├── input_audio_buffer_commit_event.py
│       │   │   ├── input_audio_buffer_commit_event_param.py
│       │   │   ├── input_audio_buffer_committed_event.py
│       │   │   ├── input_audio_buffer_dtmf_event_received_event.py
│       │   │   ├── input_audio_buffer_speech_started_event.py
│       │   │   ├── input_audio_buffer_speech_stopped_event.py
│       │   │   ├── input_audio_buffer_timeout_triggered.py
│       │   │   ├── log_prob_properties.py
│       │   │   ├── mcp_list_tools_completed.py
│       │   │   ├── mcp_list_tools_failed.py
│       │   │   ├── mcp_list_tools_in_progress.py
│       │   │   ├── noise_reduction_type.py
│       │   │   ├── output_audio_buffer_clear_event.py
│       │   │   ├── output_audio_buffer_clear_event_param.py
│       │   │   ├── rate_limits_updated_event.py
│       │   │   ├── realtime_audio_config.py
│       │   │   ├── realtime_audio_config_input.py
│       │   │   ├── realtime_audio_config_input_param.py
│       │   │   ├── realtime_audio_config_output.py
│       │   │   ├── realtime_audio_config_output_param.py
│       │   │   ├── realtime_audio_config_param.py
│       │   │   ├── realtime_audio_formats.py
│       │   │   ├── realtime_audio_formats_param.py
│       │   │   ├── realtime_audio_input_turn_detection.py
│       │   │   ├── realtime_audio_input_turn_detection_param.py
│       │   │   ├── realtime_client_event.py
│       │   │   ├── realtime_client_event_param.py
│       │   │   ├── realtime_connect_params.py
│       │   │   ├── realtime_conversation_item_assistant_message.py
│       │   │   ├── realtime_conversation_item_assistant_message_param.py
│       │   │   ├── realtime_conversation_item_function_call.py
│       │   │   ├── realtime_conversation_item_function_call_output.py
│       │   │   ├── realtime_conversation_item_function_call_output_param.py
│       │   │   ├── realtime_conversation_item_function_call_param.py
│       │   │   ├── realtime_conversation_item_system_message.py
│       │   │   ├── realtime_conversation_item_system_message_param.py
│       │   │   ├── realtime_conversation_item_user_message.py
│       │   │   ├── realtime_conversation_item_user_message_param.py
│       │   │   ├── realtime_error.py
│       │   │   ├── realtime_error_event.py
│       │   │   ├── realtime_function_tool.py
│       │   │   ├── realtime_function_tool_param.py
│       │   │   ├── realtime_mcp_approval_request.py
│       │   │   ├── realtime_mcp_approval_request_param.py
│       │   │   ├── realtime_mcp_approval_response.py
│       │   │   ├── realtime_mcp_approval_response_param.py
│       │   │   ├── realtime_mcp_list_tools.py
│       │   │   ├── realtime_mcp_list_tools_param.py
│       │   │   ├── realtime_mcp_protocol_error.py
│       │   │   ├── realtime_mcp_protocol_error_param.py
│       │   │   ├── realtime_mcp_tool_call.py
│       │   │   ├── realtime_mcp_tool_call_param.py
│       │   │   ├── realtime_mcp_tool_execution_error.py
│       │   │   ├── realtime_mcp_tool_execution_error_param.py
│       │   │   ├── realtime_mcphttp_error.py
│       │   │   ├── realtime_mcphttp_error_param.py
│       │   │   ├── realtime_response.py
│       │   │   ├── realtime_response_create_audio_output.py
│       │   │   ├── realtime_response_create_audio_output_param.py
│       │   │   ├── realtime_response_create_mcp_tool.py
│       │   │   ├── realtime_response_create_mcp_tool_param.py
│       │   │   ├── realtime_response_create_params.py
│       │   │   ├── realtime_response_create_params_param.py
│       │   │   ├── realtime_response_status.py
│       │   │   ├── realtime_response_usage.py
│       │   │   ├── realtime_response_usage_input_token_details.py
│       │   │   ├── realtime_response_usage_output_token_details.py
│       │   │   ├── realtime_server_event.py
│       │   │   ├── realtime_session_client_secret.py
│       │   │   ├── realtime_session_create_request.py
│       │   │   ├── realtime_session_create_request_param.py
│       │   │   ├── realtime_session_create_response.py
│       │   │   ├── realtime_tool_choice_config.py
│       │   │   ├── realtime_tool_choice_config_param.py
│       │   │   ├── realtime_tools_config.py
│       │   │   ├── realtime_tools_config_param.py
│       │   │   ├── realtime_tools_config_union.py
│       │   │   ├── realtime_tools_config_union_param.py
│       │   │   ├── realtime_tracing_config.py
│       │   │   ├── realtime_tracing_config_param.py
│       │   │   ├── realtime_transcription_session_audio.py
│       │   │   ├── realtime_transcription_session_audio_input.py
│       │   │   ├── realtime_transcription_session_audio_input_param.py
│       │   │   ├── realtime_transcription_session_audio_input_turn_detection.py
│       │   │   ├── realtime_transcription_session_audio_input_turn_detection_param.py
│       │   │   ├── realtime_transcription_session_audio_param.py
│       │   │   ├── realtime_transcription_session_create_request.py
│       │   │   ├── realtime_transcription_session_create_request_param.py
│       │   │   ├── realtime_transcription_session_create_response.py
│       │   │   ├── realtime_transcription_session_turn_detection.py
│       │   │   ├── realtime_truncation.py
│       │   │   ├── realtime_truncation_param.py
│       │   │   ├── realtime_truncation_retention_ratio.py
│       │   │   ├── realtime_truncation_retention_ratio_param.py
│       │   │   ├── response_audio_delta_event.py
│       │   │   ├── response_audio_done_event.py
│       │   │   ├── response_audio_transcript_delta_event.py
│       │   │   ├── response_audio_transcript_done_event.py
│       │   │   ├── response_cancel_event.py
│       │   │   ├── response_cancel_event_param.py
│       │   │   ├── response_content_part_added_event.py
│       │   │   ├── response_content_part_done_event.py
│       │   │   ├── response_create_event.py
│       │   │   ├── response_create_event_param.py
│       │   │   ├── response_created_event.py
│       │   │   ├── response_done_event.py
│       │   │   ├── response_function_call_arguments_delta_event.py
│       │   │   ├── response_function_call_arguments_done_event.py
│       │   │   ├── response_mcp_call_arguments_delta.py
│       │   │   ├── response_mcp_call_arguments_done.py
│       │   │   ├── response_mcp_call_completed.py
│       │   │   ├── response_mcp_call_failed.py
│       │   │   ├── response_mcp_call_in_progress.py
│       │   │   ├── response_output_item_added_event.py
│       │   │   ├── response_output_item_done_event.py
│       │   │   ├── response_text_delta_event.py
│       │   │   ├── response_text_done_event.py
│       │   │   ├── session_created_event.py
│       │   │   ├── session_update_event.py
│       │   │   ├── session_update_event_param.py
│       │   │   └── session_updated_event.py
│       │   ├── responses/
│       │   │   ├── __init__.py
│       │   │   ├── apply_patch_tool.py
│       │   │   ├── apply_patch_tool_param.py
│       │   │   ├── compacted_response.py
│       │   │   ├── computer_action.py
│       │   │   ├── computer_action_list.py
│       │   │   ├── computer_action_list_param.py
│       │   │   ├── computer_action_param.py
│       │   │   ├── computer_tool.py
│       │   │   ├── computer_tool_param.py
│       │   │   ├── computer_use_preview_tool.py
│       │   │   ├── computer_use_preview_tool_param.py
│       │   │   ├── container_auto.py
│       │   │   ├── container_auto_param.py
│       │   │   ├── container_network_policy_allowlist.py
│       │   │   ├── container_network_policy_allowlist_param.py
│       │   │   ├── container_network_policy_disabled.py
│       │   │   ├── container_network_policy_disabled_param.py
│       │   │   ├── container_network_policy_domain_secret.py
│       │   │   ├── container_network_policy_domain_secret_param.py
│       │   │   ├── container_reference.py
│       │   │   ├── container_reference_param.py
│       │   │   ├── custom_tool.py
│       │   │   ├── custom_tool_param.py
│       │   │   ├── easy_input_message.py
│       │   │   ├── easy_input_message_param.py
│       │   │   ├── file_search_tool.py
│       │   │   ├── file_search_tool_param.py
│       │   │   ├── function_shell_tool.py
│       │   │   ├── function_shell_tool_param.py
│       │   │   ├── function_tool.py
│       │   │   ├── function_tool_param.py
│       │   │   ├── inline_skill.py
│       │   │   ├── inline_skill_param.py
│       │   │   ├── inline_skill_source.py
│       │   │   ├── inline_skill_source_param.py
│       │   │   ├── input_item_list_params.py
│       │   │   ├── input_token_count_params.py
│       │   │   ├── input_token_count_response.py
│       │   │   ├── local_environment.py
│       │   │   ├── local_environment_param.py
│       │   │   ├── local_skill.py
│       │   │   ├── local_skill_param.py
│       │   │   ├── namespace_tool.py
│       │   │   ├── namespace_tool_param.py
│       │   │   ├── parsed_response.py
│       │   │   ├── response.py
│       │   │   ├── response_apply_patch_tool_call.py
│       │   │   ├── response_apply_patch_tool_call_output.py
│       │   │   ├── response_audio_delta_event.py
│       │   │   ├── response_audio_done_event.py
│       │   │   ├── response_audio_transcript_delta_event.py
│       │   │   ├── response_audio_transcript_done_event.py
│       │   │   ├── response_code_interpreter_call_code_delta_event.py
│       │   │   ├── response_code_interpreter_call_code_done_event.py
│       │   │   ├── response_code_interpreter_call_completed_event.py
│       │   │   ├── response_code_interpreter_call_in_progress_event.py
│       │   │   ├── response_code_interpreter_call_interpreting_event.py
│       │   │   ├── response_code_interpreter_tool_call.py
│       │   │   ├── response_code_interpreter_tool_call_param.py
│       │   │   ├── response_compact_params.py
│       │   │   ├── response_compaction_item.py
│       │   │   ├── response_compaction_item_param.py
│       │   │   ├── response_compaction_item_param_param.py
│       │   │   ├── response_completed_event.py
│       │   │   ├── response_computer_tool_call.py
│       │   │   ├── response_computer_tool_call_output_item.py
│       │   │   ├── response_computer_tool_call_output_screenshot.py
│       │   │   ├── response_computer_tool_call_output_screenshot_param.py
│       │   │   ├── response_computer_tool_call_param.py
│       │   │   ├── response_container_reference.py
│       │   │   ├── response_content_part_added_event.py
│       │   │   ├── response_content_part_done_event.py
│       │   │   ├── response_conversation_param.py
│       │   │   ├── response_conversation_param_param.py
│       │   │   ├── response_create_params.py
│       │   │   ├── response_created_event.py
│       │   │   ├── response_custom_tool_call.py
│       │   │   ├── response_custom_tool_call_input_delta_event.py
│       │   │   ├── response_custom_tool_call_input_done_event.py
│       │   │   ├── response_custom_tool_call_output.py
│       │   │   ├── response_custom_tool_call_output_param.py
│       │   │   ├── response_custom_tool_call_param.py
│       │   │   ├── response_error.py
│       │   │   ├── response_error_event.py
│       │   │   ├── response_failed_event.py
│       │   │   ├── response_file_search_call_completed_event.py
│       │   │   ├── response_file_search_call_in_progress_event.py
│       │   │   ├── response_file_search_call_searching_event.py
│       │   │   ├── response_file_search_tool_call.py
│       │   │   ├── response_file_search_tool_call_param.py
│       │   │   ├── response_format_text_config.py
│       │   │   ├── response_format_text_config_param.py
│       │   │   ├── response_format_text_json_schema_config.py
│       │   │   ├── response_format_text_json_schema_config_param.py
│       │   │   ├── response_function_call_arguments_delta_event.py
│       │   │   ├── response_function_call_arguments_done_event.py
│       │   │   ├── response_function_call_output_item.py
│       │   │   ├── response_function_call_output_item_list.py
│       │   │   ├── response_function_call_output_item_list_param.py
│       │   │   ├── response_function_call_output_item_param.py
│       │   │   ├── response_function_shell_call_output_content.py
│       │   │   ├── response_function_shell_call_output_content_param.py
│       │   │   ├── response_function_shell_tool_call.py
│       │   │   ├── response_function_shell_tool_call_output.py
│       │   │   ├── response_function_tool_call.py
│       │   │   ├── response_function_tool_call_item.py
│       │   │   ├── response_function_tool_call_output_item.py
│       │   │   ├── response_function_tool_call_param.py
│       │   │   ├── response_function_web_search.py
│       │   │   ├── response_function_web_search_param.py
│       │   │   ├── response_image_gen_call_completed_event.py
│       │   │   ├── response_image_gen_call_generating_event.py
│       │   │   ├── response_image_gen_call_in_progress_event.py
│       │   │   ├── response_image_gen_call_partial_image_event.py
│       │   │   ├── response_in_progress_event.py
│       │   │   ├── response_includable.py
│       │   │   ├── response_incomplete_event.py
│       │   │   ├── response_input.py
│       │   │   ├── response_input_audio.py
│       │   │   ├── response_input_audio_param.py
│       │   │   ├── response_input_content.py
│       │   │   ├── response_input_content_param.py
│       │   │   ├── response_input_file.py
│       │   │   ├── response_input_file_content.py
│       │   │   ├── response_input_file_content_param.py
│       │   │   ├── response_input_file_param.py
│       │   │   ├── response_input_image.py
│       │   │   ├── response_input_image_content.py
│       │   │   ├── response_input_image_content_param.py
│       │   │   ├── response_input_image_param.py
│       │   │   ├── response_input_item.py
│       │   │   ├── response_input_item_param.py
│       │   │   ├── response_input_message_content_list.py
│       │   │   ├── response_input_message_content_list_param.py
│       │   │   ├── response_input_message_item.py
│       │   │   ├── response_input_param.py
│       │   │   ├── response_input_text.py
│       │   │   ├── response_input_text_content.py
│       │   │   ├── response_input_text_content_param.py
│       │   │   ├── response_input_text_param.py
│       │   │   ├── response_item.py
│       │   │   ├── response_item_list.py
│       │   │   ├── response_local_environment.py
│       │   │   ├── response_mcp_call_arguments_delta_event.py
│       │   │   ├── response_mcp_call_arguments_done_event.py
│       │   │   ├── response_mcp_call_completed_event.py
│       │   │   ├── response_mcp_call_failed_event.py
│       │   │   ├── response_mcp_call_in_progress_event.py
│       │   │   ├── response_mcp_list_tools_completed_event.py
│       │   │   ├── response_mcp_list_tools_failed_event.py
│       │   │   ├── response_mcp_list_tools_in_progress_event.py
│       │   │   ├── response_output_item.py
│       │   │   ├── response_output_item_added_event.py
│       │   │   ├── response_output_item_done_event.py
│       │   │   ├── response_output_message.py
│       │   │   ├── response_output_message_param.py
│       │   │   ├── response_output_refusal.py
│       │   │   ├── response_output_refusal_param.py
│       │   │   ├── response_output_text.py
│       │   │   ├── response_output_text_annotation_added_event.py
│       │   │   ├── response_output_text_param.py
│       │   │   ├── response_prompt.py
│       │   │   ├── response_prompt_param.py
│       │   │   ├── response_queued_event.py
│       │   │   ├── response_reasoning_item.py
│       │   │   ├── response_reasoning_item_param.py
│       │   │   ├── response_reasoning_summary_part_added_event.py
│       │   │   ├── response_reasoning_summary_part_done_event.py
│       │   │   ├── response_reasoning_summary_text_delta_event.py
│       │   │   ├── response_reasoning_summary_text_done_event.py
│       │   │   ├── response_reasoning_text_delta_event.py
│       │   │   ├── response_reasoning_text_done_event.py
│       │   │   ├── response_refusal_delta_event.py
│       │   │   ├── response_refusal_done_event.py
│       │   │   ├── response_retrieve_params.py
│       │   │   ├── response_status.py
│       │   │   ├── response_stream_event.py
│       │   │   ├── response_text_config.py
│       │   │   ├── response_text_config_param.py
│       │   │   ├── response_text_delta_event.py
│       │   │   ├── response_text_done_event.py
│       │   │   ├── response_tool_search_call.py
│       │   │   ├── response_tool_search_output_item.py
│       │   │   ├── response_tool_search_output_item_param.py
│       │   │   ├── response_tool_search_output_item_param_param.py
│       │   │   ├── response_usage.py
│       │   │   ├── response_web_search_call_completed_event.py
│       │   │   ├── response_web_search_call_in_progress_event.py
│       │   │   ├── response_web_search_call_searching_event.py
│       │   │   ├── responses_client_event.py
│       │   │   ├── responses_client_event_param.py
│       │   │   ├── responses_server_event.py
│       │   │   ├── skill_reference.py
│       │   │   ├── skill_reference_param.py
│       │   │   ├── tool.py
│       │   │   ├── tool_choice_allowed.py
│       │   │   ├── tool_choice_allowed_param.py
│       │   │   ├── tool_choice_apply_patch.py
│       │   │   ├── tool_choice_apply_patch_param.py
│       │   │   ├── tool_choice_custom.py
│       │   │   ├── tool_choice_custom_param.py
│       │   │   ├── tool_choice_function.py
│       │   │   ├── tool_choice_function_param.py
│       │   │   ├── tool_choice_mcp.py
│       │   │   ├── tool_choice_mcp_param.py
│       │   │   ├── tool_choice_options.py
│       │   │   ├── tool_choice_shell.py
│       │   │   ├── tool_choice_shell_param.py
│       │   │   ├── tool_choice_types.py
│       │   │   ├── tool_choice_types_param.py
│       │   │   ├── tool_param.py
│       │   │   ├── tool_search_tool.py
│       │   │   ├── tool_search_tool_param.py
│       │   │   ├── web_search_preview_tool.py
│       │   │   ├── web_search_preview_tool_param.py
│       │   │   ├── web_search_tool.py
│       │   │   └── web_search_tool_param.py
│       │   ├── shared/
│       │   │   ├── __init__.py
│       │   │   ├── all_models.py
│       │   │   ├── chat_model.py
│       │   │   ├── comparison_filter.py
│       │   │   ├── compound_filter.py
│       │   │   ├── custom_tool_input_format.py
│       │   │   ├── error_object.py
│       │   │   ├── function_definition.py
│       │   │   ├── function_parameters.py
│       │   │   ├── metadata.py
│       │   │   ├── reasoning.py
│       │   │   ├── reasoning_effort.py
│       │   │   ├── response_format_json_object.py
│       │   │   ├── response_format_json_schema.py
│       │   │   ├── response_format_text.py
│       │   │   ├── response_format_text_grammar.py
│       │   │   ├── response_format_text_python.py
│       │   │   └── responses_model.py
│       │   ├── shared_params/
│       │   │   ├── __init__.py
│       │   │   ├── chat_model.py
│       │   │   ├── comparison_filter.py
│       │   │   ├── compound_filter.py
│       │   │   ├── custom_tool_input_format.py
│       │   │   ├── function_definition.py
│       │   │   ├── function_parameters.py
│       │   │   ├── metadata.py
│       │   │   ├── reasoning.py
│       │   │   ├── reasoning_effort.py
│       │   │   ├── response_format_json_object.py
│       │   │   ├── response_format_json_schema.py
│       │   │   ├── response_format_text.py
│       │   │   └── responses_model.py
│       │   ├── skill.py
│       │   ├── skill_create_params.py
│       │   ├── skill_list.py
│       │   ├── skill_list_params.py
│       │   ├── skill_update_params.py
│       │   ├── skills/
│       │   │   ├── __init__.py
│       │   │   ├── deleted_skill_version.py
│       │   │   ├── skill_version.py
│       │   │   ├── skill_version_list.py
│       │   │   ├── version_create_params.py
│       │   │   ├── version_list_params.py
│       │   │   └── versions/
│       │   │       └── __init__.py
│       │   ├── static_file_chunking_strategy.py
│       │   ├── static_file_chunking_strategy_object.py
│       │   ├── static_file_chunking_strategy_object_param.py
│       │   ├── static_file_chunking_strategy_param.py
│       │   ├── upload.py
│       │   ├── upload_complete_params.py
│       │   ├── upload_create_params.py
│       │   ├── uploads/
│       │   │   ├── __init__.py
│       │   │   ├── part_create_params.py
│       │   │   └── upload_part.py
│       │   ├── vector_store.py
│       │   ├── vector_store_create_params.py
│       │   ├── vector_store_deleted.py
│       │   ├── vector_store_list_params.py
│       │   ├── vector_store_search_params.py
│       │   ├── vector_store_search_response.py
│       │   ├── vector_store_update_params.py
│       │   ├── vector_stores/
│       │   │   ├── __init__.py
│       │   │   ├── file_batch_create_params.py
│       │   │   ├── file_batch_list_files_params.py
│       │   │   ├── file_content_response.py
│       │   │   ├── file_create_params.py
│       │   │   ├── file_list_params.py
│       │   │   ├── file_update_params.py
│       │   │   ├── vector_store_file.py
│       │   │   ├── vector_store_file_batch.py
│       │   │   └── vector_store_file_deleted.py
│       │   ├── video.py
│       │   ├── video_create_character_params.py
│       │   ├── video_create_character_response.py
│       │   ├── video_create_error.py
│       │   ├── video_create_params.py
│       │   ├── video_delete_response.py
│       │   ├── video_download_content_params.py
│       │   ├── video_edit_params.py
│       │   ├── video_extend_params.py
│       │   ├── video_get_character_response.py
│       │   ├── video_list_params.py
│       │   ├── video_model.py
│       │   ├── video_model_param.py
│       │   ├── video_remix_params.py
│       │   ├── video_seconds.py
│       │   ├── video_size.py
│       │   ├── webhooks/
│       │   │   ├── __init__.py
│       │   │   ├── batch_cancelled_webhook_event.py
│       │   │   ├── batch_completed_webhook_event.py
│       │   │   ├── batch_expired_webhook_event.py
│       │   │   ├── batch_failed_webhook_event.py
│       │   │   ├── eval_run_canceled_webhook_event.py
│       │   │   ├── eval_run_failed_webhook_event.py
│       │   │   ├── eval_run_succeeded_webhook_event.py
│       │   │   ├── fine_tuning_job_cancelled_webhook_event.py
│       │   │   ├── fine_tuning_job_failed_webhook_event.py
│       │   │   ├── fine_tuning_job_succeeded_webhook_event.py
│       │   │   ├── realtime_call_incoming_webhook_event.py
│       │   │   ├── response_cancelled_webhook_event.py
│       │   │   ├── response_completed_webhook_event.py
│       │   │   ├── response_failed_webhook_event.py
│       │   │   ├── response_incomplete_webhook_event.py
│       │   │   └── unwrap_webhook_event.py
│       │   └── websocket_connection_options.py
│       └── version.py
└── tests/
    ├── __init__.py
    ├── api_resources/
    │   ├── __init__.py
    │   ├── audio/
    │   │   ├── __init__.py
    │   │   ├── test_speech.py
    │   │   ├── test_transcriptions.py
    │   │   └── test_translations.py
    │   ├── beta/
    │   │   ├── __init__.py
    │   │   ├── chatkit/
    │   │   │   ├── __init__.py
    │   │   │   ├── test_sessions.py
    │   │   │   └── test_threads.py
    │   │   ├── test_assistants.py
    │   │   ├── test_realtime.py
    │   │   ├── test_threads.py
    │   │   └── threads/
    │   │       ├── __init__.py
    │   │       ├── runs/
    │   │       │   ├── __init__.py
    │   │       │   └── test_steps.py
    │   │       ├── test_messages.py
    │   │       └── test_runs.py
    │   ├── chat/
    │   │   ├── __init__.py
    │   │   ├── completions/
    │   │   │   ├── __init__.py
    │   │   │   └── test_messages.py
    │   │   └── test_completions.py
    │   ├── containers/
    │   │   ├── __init__.py
    │   │   ├── files/
    │   │   │   ├── __init__.py
    │   │   │   └── test_content.py
    │   │   └── test_files.py
    │   ├── conversations/
    │   │   ├── __init__.py
    │   │   └── test_items.py
    │   ├── evals/
    │   │   ├── __init__.py
    │   │   ├── runs/
    │   │   │   ├── __init__.py
    │   │   │   └── test_output_items.py
    │   │   └── test_runs.py
    │   ├── fine_tuning/
    │   │   ├── __init__.py
    │   │   ├── alpha/
    │   │   │   ├── __init__.py
    │   │   │   └── test_graders.py
    │   │   ├── checkpoints/
    │   │   │   ├── __init__.py
    │   │   │   └── test_permissions.py
    │   │   ├── jobs/
    │   │   │   ├── __init__.py
    │   │   │   └── test_checkpoints.py
    │   │   └── test_jobs.py
    │   ├── realtime/
    │   │   ├── __init__.py
    │   │   ├── test_calls.py
    │   │   └── test_client_secrets.py
    │   ├── responses/
    │   │   ├── __init__.py
    │   │   ├── test_input_items.py
    │   │   └── test_input_tokens.py
    │   ├── skills/
    │   │   ├── __init__.py
    │   │   ├── test_content.py
    │   │   ├── test_versions.py
    │   │   └── versions/
    │   │       ├── __init__.py
    │   │       └── test_content.py
    │   ├── test_batches.py
    │   ├── test_completions.py
    │   ├── test_containers.py
    │   ├── test_conversations.py
    │   ├── test_embeddings.py
    │   ├── test_evals.py
    │   ├── test_files.py
    │   ├── test_images.py
    │   ├── test_models.py
    │   ├── test_moderations.py
    │   ├── test_realtime.py
    │   ├── test_responses.py
    │   ├── test_skills.py
    │   ├── test_uploads.py
    │   ├── test_vector_stores.py
    │   ├── test_videos.py
    │   ├── test_webhooks.py
    │   ├── uploads/
    │   │   ├── __init__.py
    │   │   └── test_parts.py
    │   ├── vector_stores/
    │   │   ├── __init__.py
    │   │   ├── test_file_batches.py
    │   │   └── test_files.py
    │   └── webhooks/
    │       └── __init__.py
    ├── compat/
    │   └── test_tool_param.py
    ├── conftest.py
    ├── lib/
    │   ├── __init__.py
    │   ├── chat/
    │   │   ├── __init__.py
    │   │   ├── test_completions.py
    │   │   └── test_completions_streaming.py
    │   ├── responses/
    │   │   ├── __init__.py
    │   │   └── test_responses.py
    │   ├── schema_types/
    │   │   └── query.py
    │   ├── snapshots.py
    │   ├── test_assistants.py
    │   ├── test_audio.py
    │   ├── test_azure.py
    │   ├── test_old_api.py
    │   ├── test_pydantic.py
    │   └── utils.py
    ├── sample_file.txt
    ├── test_client.py
    ├── test_deepcopy.py
    ├── test_extract_files.py
    ├── test_files.py
    ├── test_legacy_response.py
    ├── test_models.py
    ├── test_module_client.py
    ├── test_qs.py
    ├── test_required_args.py
    ├── test_response.py
    ├── test_streaming.py
    ├── test_transform.py
    ├── test_utils/
    │   ├── test_datetime_parse.py
    │   ├── test_json.py
    │   ├── test_logging.py
    │   ├── test_proxy.py
    │   └── test_typing.py
    ├── test_websocket_connection_options.py
    └── utils.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .devcontainer/Dockerfile
================================================
ARG VARIANT="3.9"
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}

USER vscode

RUN curl -sSf https://rye.astral.sh/get | RYE_VERSION="0.44.0" RYE_INSTALL_OPTION="--yes" bash
ENV PATH=/home/vscode/.rye/shims:$PATH

RUN echo "[[ -d .venv ]] && source .venv/bin/activate || export PATH=\$PATH" >> /home/vscode/.bashrc


================================================
FILE: .devcontainer/devcontainer.json
================================================
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
{
  "name": "Debian",
  "build": {
    "dockerfile": "Dockerfile",
    "context": ".."
  },

  "postStartCommand": "rye sync --all-features",

  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python"
      ],
      "settings": { 
        "terminal.integrated.shell.linux": "/bin/bash",
        "python.pythonPath": ".venv/bin/python",
        "python.defaultInterpreterPath": ".venv/bin/python",
        "python.typeChecking": "basic",
        "terminal.integrated.env.linux": {
          "PATH": "/home/vscode/.rye/shims:${env:PATH}"
        }
      }
    }
  },
  "features": {
    "ghcr.io/devcontainers/features/node:1": {}
  }

  // Features to add to the dev container. More info: https://containers.dev/features.
  // "features": {},

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // "forwardPorts": [],

  // Configure tool-specific properties.
  // "customizations": {},

  // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
  // "remoteUser": "root"
}


================================================
FILE: .github/CODEOWNERS
================================================
# This file is used to automatically assign reviewers to PRs
# For more information see: https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners

* @openai/sdks-team


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug report
description: Report an issue or bug with this library
labels: ['bug']
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: checkboxes
    id: non_api
    attributes:
      label: Confirm this is an issue with the Python library and not an underlying OpenAI API
      description: Issues with the underlying OpenAI API should be reported on our [Developer Community](https://community.openai.com/c/api/7)
      options:
        - label: This is an issue with the Python library
          required: true
  - type: textarea
    id: what-happened
    attributes:
      label: Describe the bug
      description: A clear and concise description of what the bug is, and any additional context.
      placeholder: Tell us what you see!
    validations:
      required: true
  - type: textarea
    id: repro-steps
    attributes:
      label: To Reproduce
      description: Steps to reproduce the behavior.
      placeholder: |
        1. Fetch a '...'
        2. Update the '....'
        3. See error
    validations:
      required: true
  - type: textarea
    id: code-snippets
    attributes:
      label: Code snippets
      description: If applicable, add code snippets to help explain your problem.
      render: Python
    validations:
      required: false
  - type: input
    id: os
    attributes:
      label: OS
      placeholder: macOS
    validations:
      required: true
  - type: input
    id: language-version
    attributes:
      label: Python version
      placeholder: Python v3.11.4
    validations:
      required: true
  - type: input
    id: lib-version
    attributes:
      label: Library version
      placeholder: openai v1.0.1
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: OpenAI support
    url: https://help.openai.com/
    about: |
      Please only file issues here that you believe represent actual bugs or feature requests for the OpenAI Python library.
      If you're having general trouble with the OpenAI API, please visit our help center to get support.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature request
description: Suggest an idea for this library
labels: ['feature-request']
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this feature request!
  - type: checkboxes
    id: non_api
    attributes:
      label: Confirm this is a feature request for the Python library and not the underlying OpenAI API.
      description: Feature requests for the underlying OpenAI API should be reported on our [Developer Community](https://community.openai.com/c/api/7)
      options:
        - label: This is a feature request for the Python library
          required: true
  - type: textarea
    id: feature
    attributes:
      label: Describe the feature or improvement you're requesting
      description: A clear and concise description of what you want to happen.
    validations:
      required: true
  - type: textarea
    id: context
    attributes:
      label: Additional context
      description: Add any other context about the feature request here.


================================================
FILE: .github/pull_request_template.md
================================================
<!-- Thank you for contributing to this project! -->
<!-- The code in this repository is all auto-generated, and is not meant to be edited manually. -->
<!-- We recommend opening an Issue instead, but you are still welcome to open a PR to share for -->
<!-- an improvement if you wish, just note that we are unlikely to merge it as-is. -->

- [ ] I understand that this repository is auto-generated and my pull request may not be merged

## Changes being requested

## Additional context & links


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
  push:
    branches:
      - '**'
      - '!integrated/**'
      - '!stl-preview-head/**'
      - '!stl-preview-base/**'
      - '!generated'
      - '!codegen/**'
      - 'codegen/stl/**'
  pull_request:
    branches-ignore:
      - 'stl-preview-head/**'
      - 'stl-preview-base/**'

jobs:
  lint:
    timeout-minutes: 10
    name: lint
    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
    if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
    steps:
      - uses: actions/checkout@v6

      - name: Install Rye
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'

      - name: Install dependencies
        run: rye sync --all-features

      - name: Run lints
        run: ./scripts/lint

  build:
    if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
    timeout-minutes: 10
    name: build
    permissions:
      contents: read
      id-token: write
    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
    steps:
      - uses: actions/checkout@v6

      - name: Install Rye
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'

      - name: Install dependencies
        run: rye sync --all-features

      - name: Run build
        run: rye build

      - name: Get GitHub OIDC Token
        if: |-
          github.repository == 'stainless-sdks/openai-python' &&
          !startsWith(github.ref, 'refs/heads/stl/')
        id: github-oidc
        uses: actions/github-script@v8
        with:
          script: core.setOutput('github_token', await core.getIDToken());

      - name: Upload tarball
        if: |-
          github.repository == 'stainless-sdks/openai-python' &&
          !startsWith(github.ref, 'refs/heads/stl/')
        env:
          URL: https://pkg.stainless.com/s
          AUTH: ${{ steps.github-oidc.outputs.github_token }}
          SHA: ${{ github.sha }}
        run: ./scripts/utils/upload-artifact.sh

  test:
    timeout-minutes: 10
    name: test
    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
    if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
    steps:
      - uses: actions/checkout@v6

      - name: Install Rye
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'

      - name: Bootstrap
        run: ./scripts/bootstrap

      - name: Run tests
        run: ./scripts/test

  examples:
    timeout-minutes: 10
    name: examples
    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
    if: github.repository == 'openai/openai-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork)

    steps:
      - uses: actions/checkout@v6

      - name: Install Rye
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'
      - name: Install dependencies
        run: |
          rye sync --all-features

      - env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
            rye run python examples/demo.py
      - env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
            rye run python examples/async_demo.py


================================================
FILE: .github/workflows/create-releases.yml
================================================
name: Create releases
on:
  schedule:
    - cron: '0 5 * * *' # every day at 5am UTC
  push:
    branches:
      - main

jobs:
  release:
    name: release
    if: github.ref == 'refs/heads/main' && github.repository == 'openai/openai-python'
    runs-on: ubuntu-latest
    environment: publish

    steps:
      - uses: actions/checkout@v6

      - uses: stainless-api/trigger-release-please@v1
        id: release
        with:
          repo: ${{ github.event.repository.full_name }}
          stainless-api-key: ${{ secrets.STAINLESS_API_KEY }}

      - name: Install Rye
        if: ${{ steps.release.outputs.releases_created }}
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'

      - name: Publish to PyPI
        if: ${{ steps.release.outputs.releases_created }}
        run: |
          bash ./bin/publish-pypi
        env:
          PYPI_TOKEN: ${{ secrets.OPENAI_PYPI_TOKEN || secrets.PYPI_TOKEN }}


================================================
FILE: .github/workflows/detect-breaking-changes.yml
================================================
name: CI
on:
  pull_request:
    branches:
      - main
      - next

jobs:
  detect_breaking_changes:
    runs-on: 'ubuntu-latest'
    name: detect-breaking-changes
    if: github.repository == 'openai/openai-python'
    steps:
      - name: Calculate fetch-depth
        run: |
          echo "FETCH_DEPTH=$(expr ${{ github.event.pull_request.commits }} + 1)" >> $GITHUB_ENV

      - uses: actions/checkout@v6
        with:
          # Ensure we can check out the pull request base in the script below.
          fetch-depth: ${{ env.FETCH_DEPTH }}

      - name: Install Rye
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'
      - name: Install dependencies
        run: |
          rye sync --all-features
      - name: Detect removed symbols
        run: |
          rye run python scripts/detect-breaking-changes.py "${{ github.event.pull_request.base.sha }}"

      - name: Detect breaking changes
        run: |
          test -f ./scripts/detect-breaking-changes || { echo "Missing scripts/detect-breaking-changes"; exit 1; }
          ./scripts/detect-breaking-changes ${{ github.event.pull_request.base.sha }}

  agents_sdk:
    runs-on: 'ubuntu-latest'
    name: Detect Agents SDK regressions
    if: github.repository == 'openai/openai-python'
    steps:
      # Setup this sdk
      - uses: actions/checkout@v4
        with:
          path: openai-python

      - name: Install Rye
        working-directory: openai-python
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'

      - name: Install dependencies
        working-directory: openai-python
        run: |
          rye sync --all-features

      # Setup the agents lib
      - uses: actions/checkout@v4
        with:
          repository: openai/openai-agents-python
          path: openai-agents-python

      - name: Setup uv
        uses: astral-sh/setup-uv@v5
        with:
          enable-cache: true

      - name: Link to local SDK
        working-directory: openai-agents-python
        run: uv add ../openai-python

      - name: Install dependencies
        working-directory: openai-agents-python
        run: make sync

      - name: Run integration type checks
        working-directory: openai-agents-python
        run: make mypy



================================================
FILE: .github/workflows/publish-pypi.yml
================================================
# workflow for re-running publishing to PyPI in case it fails for some reason
# you can run this workflow by navigating to https://www.github.com/openai/openai-python/actions/workflows/publish-pypi.yml
name: Publish PyPI
on:
  workflow_dispatch:

jobs:
  publish:
    name: publish
    runs-on: ubuntu-latest
    environment: publish

    steps:
      - uses: actions/checkout@v6

      - name: Install Rye
        run: |
          curl -sSf https://rye.astral.sh/get | bash
          echo "$HOME/.rye/shims" >> $GITHUB_PATH
        env:
          RYE_VERSION: '0.44.0'
          RYE_INSTALL_OPTION: '--yes'

      - name: Publish to PyPI
        run: |
          bash ./bin/publish-pypi
        env:
          PYPI_TOKEN: ${{ secrets.OPENAI_PYPI_TOKEN || secrets.PYPI_TOKEN }}


================================================
FILE: .github/workflows/release-doctor.yml
================================================
name: Release Doctor
on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  release_doctor:
    name: release doctor
    runs-on: ubuntu-latest
    environment: publish
    if: github.repository == 'openai/openai-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')

    steps:
      - uses: actions/checkout@v6

      - name: Check release environment
        run: |
          bash ./bin/check-release-environment
        env:
          STAINLESS_API_KEY: ${{ secrets.STAINLESS_API_KEY }}
          PYPI_TOKEN: ${{ secrets.OPENAI_PYPI_TOKEN || secrets.PYPI_TOKEN }}


================================================
FILE: .gitignore
================================================
.prism.log
_dev

__pycache__
.mypy_cache

dist

.venv
.idea

.env
.envrc
codegen.log
Brewfile.lock.json

.DS_Store

examples/*.mp3


================================================
FILE: .inline-snapshot/external/.gitignore
================================================
# ignore all snapshots which are not refered in the source
*-new.*


================================================
FILE: .python-version
================================================
3.9.18


================================================
FILE: .release-please-manifest.json
================================================
{
  ".": "2.29.0"
}

================================================
FILE: .stats.yml
================================================
configured_endpoints: 152
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-55ef7034334e938c30656a404ce5e21466103be87542a796425346299f450404.yml
openapi_spec_hash: 4a5bfd2ee4ad47f5b7cf6f1ad08d5d7f
config_hash: 96fbf82cf74a44ccd513f5acf0956ffd


================================================
FILE: .vscode/settings.json
================================================
{
    "python.analysis.importFormat": "relative",
}


================================================
FILE: Brewfile
================================================
brew "rye"



================================================
FILE: CHANGELOG.md
================================================
# Changelog

## 2.29.0 (2026-03-17)

Full Changelog: [v2.28.0...v2.29.0](https://github.com/openai/openai-python/compare/v2.28.0...v2.29.0)

### Features

* **api:** 5.4 nano and mini model slugs ([3b45666](https://github.com/openai/openai-python/commit/3b456661f77ca3196aceb5ab3350664a63481114))
* **api:** add /v1/videos endpoint to batches create method ([c0e7a16](https://github.com/openai/openai-python/commit/c0e7a161a996854021e9eb69ea2a60ca0d08047f))
* **api:** add defer_loading field to ToolFunction ([3167595](https://github.com/openai/openai-python/commit/3167595432bdda2f90721901d30ad316db49323e))
* **api:** add in and nin operators to ComparisonFilter type ([664f02b](https://github.com/openai/openai-python/commit/664f02b051af84e1ca3fa313981ec72fdea269b3))


### Bug Fixes

* **deps:** bump minimum typing-extensions version ([a2fb2ca](https://github.com/openai/openai-python/commit/a2fb2ca55142c6658a18be7bd1392a01f5a83f35))
* **pydantic:** do not pass `by_alias` unless set ([8ebe8fb](https://github.com/openai/openai-python/commit/8ebe8fbcb011c6a005a715cae50c6400a8596ee0))


### Chores

* **internal:** tweak CI branches ([96ccc3c](https://github.com/openai/openai-python/commit/96ccc3cca35645fd3140f99b0fc8e55545065212))

## 2.28.0 (2026-03-13)

Full Changelog: [v2.27.0...v2.28.0](https://github.com/openai/openai-python/compare/v2.27.0...v2.28.0)

### Features

* **api:** custom voices ([50dc060](https://github.com/openai/openai-python/commit/50dc060b55767615419219ef567d31210517e613))

## 2.27.0 (2026-03-13)

Full Changelog: [v2.26.0...v2.27.0](https://github.com/openai/openai-python/compare/v2.26.0...v2.27.0)

### Features

* **api:** api update ([60ab24a](https://github.com/openai/openai-python/commit/60ab24ae722a7fa280eb4b2273da4ded1f930231))
* **api:** manual updates ([b244b09](https://github.com/openai/openai-python/commit/b244b0946045aaa0dbfa8c0ce5164b64e1156834))
* **api:** manual updates ([d806635](https://github.com/openai/openai-python/commit/d806635081a736cc81344bf1e62b57956a88d093))
* **api:** sora api improvements: character api, video extensions/edits, higher resolution exports. ([58b70d3](https://github.com/openai/openai-python/commit/58b70d304a4b2cf70eae4db4b448d439fc8b8ba3))


### Bug Fixes

* **api:** repair merged videos resource ([742d8ee](https://github.com/openai/openai-python/commit/742d8ee1f969ee1bbb39ba9d799dcd5c480d8ddb))


### Chores

* **internal:** codegen related update ([4e6498e](https://github.com/openai/openai-python/commit/4e6498e2d222dd35d76bb397ba976ff53c852e12))
* **internal:** codegen related update ([93af129](https://github.com/openai/openai-python/commit/93af129e8919de6d3aee19329c8bdef0532bd20a))
* match http protocol with ws protocol instead of wss ([026f9de](https://github.com/openai/openai-python/commit/026f9de35d2aa74f35c91261eb5ea43d4ab1b8ba))
* use proper capitalization for WebSockets ([a2f9b07](https://github.com/openai/openai-python/commit/a2f9b0722597627e8d01aa05c27a52015072726b))

## 2.26.0 (2026-03-05)

Full Changelog: [v2.25.0...v2.26.0](https://github.com/openai/openai-python/compare/v2.25.0...v2.26.0)

### Features

* **api:** The GA ComputerTool now uses the CompuerTool class. The 'computer_use_preview' tool is moved to ComputerUsePreview ([78f5b3c](https://github.com/openai/openai-python/commit/78f5b3c287b71ed6fbeb71fb6b5c0366db704cd2))

## 2.25.0 (2026-03-05)

Full Changelog: [v2.24.0...v2.25.0](https://github.com/openai/openai-python/compare/v2.24.0...v2.25.0)

### Features

* **api:** gpt-5.4, tool search tool, and new computer tool ([6b2043f](https://github.com/openai/openai-python/commit/6b2043f3d63058f5582eab7a7705b30a3d5536f0))
* **api:** remove prompt_cache_key param from responses, phase field from message types ([44fb382](https://github.com/openai/openai-python/commit/44fb382698872d98d5f72c880b47846c7b594f4f))


### Bug Fixes

* **api:** internal schema fixes ([0c0f970](https://github.com/openai/openai-python/commit/0c0f970cbd164131bf06f7ab38f170bbcb323683))
* **api:** manual updates ([9fc323f](https://github.com/openai/openai-python/commit/9fc323f4da6cfca9de194e12c1486a3cd1bfa4b5))
* **api:** readd phase ([1b27b5a](https://github.com/openai/openai-python/commit/1b27b5a834f5cb75f80c597259d0df0352ba83bd))


### Chores

* **internal:** codegen related update ([bdb837d](https://github.com/openai/openai-python/commit/bdb837d2c1d2a161cc4b22ef26e9e8446d5dc2a3))
* **internal:** codegen related update ([b1de941](https://github.com/openai/openai-python/commit/b1de9419a68fd6fb97a63f415fb3d1e5851582cb))
* **internal:** reduce warnings ([7cdbd06](https://github.com/openai/openai-python/commit/7cdbd06d3ca41af64d616b4b4bb61226cc38b662))

## 2.24.0 (2026-02-24)

Full Changelog: [v2.23.0...v2.24.0](https://github.com/openai/openai-python/compare/v2.23.0...v2.24.0)

### Features

* **api:** add phase ([391deb9](https://github.com/openai/openai-python/commit/391deb99f6a92e51bffb25efd8dfe367d144bb9d))


### Bug Fixes

* **api:** fix phase enum ([42ebf7c](https://github.com/openai/openai-python/commit/42ebf7c30b7e27a175c0d75fcf42c8dc858e56d6))
* **api:** phase docs ([7ddc61c](https://github.com/openai/openai-python/commit/7ddc61cd0f7825d5e7f3a10daf809135511d8d20))


### Chores

* **internal:** make `test_proxy_environment_variables` more resilient to env ([65af8fd](https://github.com/openai/openai-python/commit/65af8fd8550e99236e3f4dcb035312441788157a))
* **internal:** refactor sse event parsing ([2344600](https://github.com/openai/openai-python/commit/23446008f06fb474d8c75d14a1bce26f4c5b95d8))

## 2.23.0 (2026-02-24)

Full Changelog: [v2.22.0...v2.23.0](https://github.com/openai/openai-python/compare/v2.22.0...v2.23.0)

### Features

* **api:** add gpt-realtime-1.5 and gpt-audio-1.5 model options to realtime calls ([3300b61](https://github.com/openai/openai-python/commit/3300b61e1d5a34c9d28ec9cebbebd0de1fa93aa6))


### Chores

* **internal:** make `test_proxy_environment_variables` more resilient ([6b441e2](https://github.com/openai/openai-python/commit/6b441e2c43df60a773f62308e918d76b8eb3c4d3))

## 2.22.0 (2026-02-23)

Full Changelog: [v2.21.0...v2.22.0](https://github.com/openai/openai-python/compare/v2.21.0...v2.22.0)

### Features

* **api:** websockets for responses api ([c01f6fb](https://github.com/openai/openai-python/commit/c01f6fb0d55b7454f73c4904ea7a1954553085dc))


### Chores

* **internal:** add request options to SSE classes ([cdb4315](https://github.com/openai/openai-python/commit/cdb4315ee29d5260bb373625d74cb523b4e3859c))
* update mock server docs ([91f4da8](https://github.com/openai/openai-python/commit/91f4da80ec3dba5d3566961560dfd6feb9c2feb0))


### Documentation

* **api:** add batch size limit to file_batches parameter descriptions ([16ae76a](https://github.com/openai/openai-python/commit/16ae76a20a47f94c91ee2ca0b2ada274633abab3))
* **api:** enhance method descriptions across audio, chat, realtime, skills, uploads, videos ([21f9e5a](https://github.com/openai/openai-python/commit/21f9e5aaf6ae27f0235fddb3ffa30fe73337f59b))
* **api:** update safety_identifier documentation in chat completions and responses ([d74bfff](https://github.com/openai/openai-python/commit/d74bfff62c1c2b32d4dc88fd47ae7b1b2a962017))

## 2.21.0 (2026-02-13)

Full Changelog: [v2.20.0...v2.21.0](https://github.com/openai/openai-python/compare/v2.20.0...v2.21.0)

### Features

* **api:** container network_policy and skills ([d19de2e](https://github.com/openai/openai-python/commit/d19de2ee5c74413f9dc52684b650df1898dee82b))


### Bug Fixes

* **structured outputs:** resolve memory leak in parse methods ([#2860](https://github.com/openai/openai-python/issues/2860)) ([6dcbe21](https://github.com/openai/openai-python/commit/6dcbe211f12f8470db542a5cb95724cb933786dd))
* **webhooks:** preserve method visibility for compatibility checks ([44a8936](https://github.com/openai/openai-python/commit/44a8936d580b770f23fae79659101a27eadafad6))


### Chores

* **internal:** fix lint error on Python 3.14 ([534f215](https://github.com/openai/openai-python/commit/534f215941f504443d63509e872409a0b1236452))


### Documentation

* split `api.md` by standalone resources ([96e41b3](https://github.com/openai/openai-python/commit/96e41b398a110212ddec71436b2439343bea87d4))
* update comment ([63def23](https://github.com/openai/openai-python/commit/63def23b7acd5c6dacf03337fe1bd08439d1dba8))

## 2.20.0 (2026-02-10)

Full Changelog: [v2.19.0...v2.20.0](https://github.com/openai/openai-python/compare/v2.19.0...v2.20.0)

### Features

* **api:** support for images in batch api ([28edb6e](https://github.com/openai/openai-python/commit/28edb6e1b7eb30dbb7be49979cee7882e8889264))

## 2.19.0 (2026-02-10)

Full Changelog: [v2.18.0...v2.19.0](https://github.com/openai/openai-python/compare/v2.18.0...v2.19.0)

### Features

* **api:** skills and hosted shell ([27fdf68](https://github.com/openai/openai-python/commit/27fdf6820655b5994e3c1eddb3c8d9344a8be744))


### Chores

* **internal:** bump dependencies ([fae10fd](https://github.com/openai/openai-python/commit/fae10fd6e936a044f8393a454a39906aa325a893))

## 2.18.0 (2026-02-09)

Full Changelog: [v2.17.0...v2.18.0](https://github.com/openai/openai-python/compare/v2.17.0...v2.18.0)

### Features

* **api:** add context_management to responses ([137e992](https://github.com/openai/openai-python/commit/137e992b80956401d1867274fa7a0969edfdba54))
* **api:** responses context_management ([c3bd017](https://github.com/openai/openai-python/commit/c3bd017318347af0a0105a7e975c8d91e22f7941))

## 2.17.0 (2026-02-05)

Full Changelog: [v2.16.0...v2.17.0](https://github.com/openai/openai-python/compare/v2.16.0...v2.17.0)

### Features

* **api:** add shell_call_output status field ([1bbaf88](https://github.com/openai/openai-python/commit/1bbaf8865000b338c24c9fdd5e985183feaca10f))
* **api:** image generation actions for responses; ResponseFunctionCallArgumentsDoneEvent.name ([7d96513](https://github.com/openai/openai-python/commit/7d965135f93f41b0c3dbf3dc9f01796bd9645b6c))
* **client:** add custom JSON encoder for extended type support ([9f43c8b](https://github.com/openai/openai-python/commit/9f43c8b1a1641db2336cc6d0ec0c6dc470a89103))


### Bug Fixes

* **client:** undo change to web search Find action ([8f14eb0](https://github.com/openai/openai-python/commit/8f14eb0a74363fdfc648c5cd5c6d34a85b938d3c))
* **client:** update type for `find_in_page` action ([ec54dde](https://github.com/openai/openai-python/commit/ec54ddeb357e49edd81cc3fe53d549c297e59a07))

## 2.16.0 (2026-01-27)

Full Changelog: [v2.15.0...v2.16.0](https://github.com/openai/openai-python/compare/v2.15.0...v2.16.0)

### Features

* **api:** api update ([b97f9f2](https://github.com/openai/openai-python/commit/b97f9f26b9c46ca4519130e60a8bf12ad8d52bf3))
* **api:** api updates ([9debcc0](https://github.com/openai/openai-python/commit/9debcc02370f5b76a6a609ded18fbf8dea87b9cb))
* **client:** add support for binary request streaming ([49561d8](https://github.com/openai/openai-python/commit/49561d88279628bc400d1b09aa98765b67018ef1))


### Bug Fixes

* **api:** mark assistants as deprecated ([0419cbc](https://github.com/openai/openai-python/commit/0419cbcbf1021131c7492321436ed01ca4337835))


### Chores

* **ci:** upgrade `actions/github-script` ([5139f13](https://github.com/openai/openai-python/commit/5139f13ef35e64dadc65f2ba2bab736977985769))
* **internal:** update `actions/checkout` version ([f276714](https://github.com/openai/openai-python/commit/f2767144c11833070c0579063ed33918089b4617))


### Documentation

* **examples:** update Azure Realtime sample to use v1 API ([#2829](https://github.com/openai/openai-python/issues/2829)) ([3b31981](https://github.com/openai/openai-python/commit/3b319819544d629c5b8c206b8b1f6ec6328c6136))

## 2.15.0 (2026-01-09)

Full Changelog: [v2.14.0...v2.15.0](https://github.com/openai/openai-python/compare/v2.14.0...v2.15.0)

### Features

* **api:** add new Response completed_at prop ([f077752](https://github.com/openai/openai-python/commit/f077752f4a8364a74f784f8fb1cbe31277e1762b))


### Chores

* **internal:** codegen related update ([e7daba6](https://github.com/openai/openai-python/commit/e7daba6662a3c30f73d991e96cb19d2b54d772e0))

## 2.14.0 (2025-12-19)

Full Changelog: [v2.13.0...v2.14.0](https://github.com/openai/openai-python/compare/v2.13.0...v2.14.0)

### Features

* **api:** slugs for new audio models; make all `model` params accept strings ([e517792](https://github.com/openai/openai-python/commit/e517792b58d1768cfb3432a555a354ae0a9cfa21))


### Bug Fixes

* use async_to_httpx_files in patch method ([a6af9ee](https://github.com/openai/openai-python/commit/a6af9ee5643197222f328d5e73a80ab3515c32e2))


### Chores

* **internal:** add `--fix` argument to lint script ([93107ef](https://github.com/openai/openai-python/commit/93107ef36abcfd9c6b1419533a1720031f03caec))

## 2.13.0 (2025-12-16)

Full Changelog: [v2.12.0...v2.13.0](https://github.com/openai/openai-python/compare/v2.12.0...v2.13.0)

### Features

* **api:** gpt-image-1.5 ([1c88f03](https://github.com/openai/openai-python/commit/1c88f03bb48aa67426744e5b74f6197f30f61c73))


### Chores

* **ci:** add CI job to detect breaking changes with the Agents SDK ([#1436](https://github.com/openai/openai-python/issues/1436)) ([237c91e](https://github.com/openai/openai-python/commit/237c91ee6738b6764b139fd7afa68294d3ee0153))
* **internal:** add missing files argument to base client ([e6d6fd5](https://github.com/openai/openai-python/commit/e6d6fd5989d76358ea5d9abb5949aa87646cbef6))

## 2.12.0 (2025-12-15)

Full Changelog: [v2.11.0...v2.12.0](https://github.com/openai/openai-python/compare/v2.11.0...v2.12.0)

### Features

* **api:** api update ([a95c4d0](https://github.com/openai/openai-python/commit/a95c4d0952ff5eb767206574e687cb029a49a4ab))
* **api:** fix grader input list, add dated slugs for sora-2 ([b2c389b](https://github.com/openai/openai-python/commit/b2c389bf5c3bde50bac2d9f60cce58f4aef44a41))

## 2.11.0 (2025-12-11)

Full Changelog: [v2.10.0...v2.11.0](https://github.com/openai/openai-python/compare/v2.10.0...v2.11.0)

### Features

* **api:** gpt 5.2 ([dd9b8e8](https://github.com/openai/openai-python/commit/dd9b8e85cf91fe0d7470143fba10fe950ec740c4))

## 2.10.0 (2025-12-10)

Full Changelog: [v2.9.0...v2.10.0](https://github.com/openai/openai-python/compare/v2.9.0...v2.10.0)

### Features

* **api:** make model required for the responses/compact endpoint ([a12936b](https://github.com/openai/openai-python/commit/a12936b18cf19009d4e6d586c9b1958359636dbe))


### Bug Fixes

* **types:** allow pyright to infer TypedDict types within SequenceNotStr ([8f0d230](https://github.com/openai/openai-python/commit/8f0d23066c1edc38a6e9858b054dceaf92ae001b))


### Chores

* add missing docstrings ([f20a9a1](https://github.com/openai/openai-python/commit/f20a9a18a421ba69622c77ab539509d218e774eb))
* **internal:** update docstring ([9a993f2](https://github.com/openai/openai-python/commit/9a993f2261b6524aa30b955e006c7ea89f086968))

## 2.9.0 (2025-12-04)

Full Changelog: [v2.8.1...v2.9.0](https://github.com/openai/openai-python/compare/v2.8.1...v2.9.0)

### Features

* **api:** gpt-5.1-codex-max and responses/compact ([22f646e](https://github.com/openai/openai-python/commit/22f646e985b7c93782cf695edbe643844cae7017))


### Bug Fixes

* **client:** avoid mutating user-provided response config object ([#2700](https://github.com/openai/openai-python/issues/2700)) ([e040d22](https://github.com/openai/openai-python/commit/e040d22c2df068e908f69dc6b892e7f8b3fe6e99))
* ensure streams are always closed ([0b1a27f](https://github.com/openai/openai-python/commit/0b1a27f08639d14dfe40bf80b48e2b8a1a51593c))
* **streaming:** correct indentation ([575bbac](https://github.com/openai/openai-python/commit/575bbac13b3a57731a4e07b67636ae94463d43fa))


### Chores

* **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([22cd586](https://github.com/openai/openai-python/commit/22cd586dbd5484b47f625da55db697691116b22b))
* **docs:** use environment variables for authentication in code snippets ([c2a3cd5](https://github.com/openai/openai-python/commit/c2a3cd502bfb03f68f62f50aed15a40458c0996e))
* **internal:** codegen related update ([307a066](https://github.com/openai/openai-python/commit/307a0664383b9d1d4151bc1a05a78c4fdcdcc9b0))
* update lockfile ([b4109c5](https://github.com/openai/openai-python/commit/b4109c5fcf971ccfb25b4bdaef0bf36999f9eca5))

## 2.8.1 (2025-11-17)

Full Changelog: [v2.8.0...v2.8.1](https://github.com/openai/openai-python/compare/v2.8.0...v2.8.1)

### Bug Fixes

* **api:** align types of input items / output items for typescript ([64c9fb3](https://github.com/openai/openai-python/commit/64c9fb3fcc79f0049b3a36bd429faf0600d969f6))

## 2.8.0 (2025-11-13)

Full Changelog: [v2.7.2...v2.8.0](https://github.com/openai/openai-python/compare/v2.7.2...v2.8.0)

### Features

* **api:** gpt 5.1 ([8d9f2ca](https://github.com/openai/openai-python/commit/8d9f2cab4cb2e12f6e2ab1de967f858736a656ac))


### Bug Fixes

* **compat:** update signatures of `model_dump` and `model_dump_json` for Pydantic v1 ([c7bd234](https://github.com/openai/openai-python/commit/c7bd234b18239fcdbf0edb1b51ca9116c0ac7251))

## 2.7.2 (2025-11-10)

Full Changelog: [v2.7.1...v2.7.2](https://github.com/openai/openai-python/compare/v2.7.1...v2.7.2)

### Bug Fixes

* compat with Python 3.14 ([15a7ec8](https://github.com/openai/openai-python/commit/15a7ec8a753d7f57d525fca60c547fd5331cb214))


### Chores

* **package:** drop Python 3.8 support ([afc14f2](https://github.com/openai/openai-python/commit/afc14f2e42e7a8174f2ff1a5672829b808a716bf))

## 2.7.1 (2025-11-04)

Full Changelog: [v2.7.0...v2.7.1](https://github.com/openai/openai-python/compare/v2.7.0...v2.7.1)

### Bug Fixes

* **api:** fix nullability of logprobs ([373b7f6](https://github.com/openai/openai-python/commit/373b7f6e4255dfef3ccd92520011e8ba44e8b7f0))

## 2.7.0 (2025-11-03)

Full Changelog: [v2.6.1...v2.7.0](https://github.com/openai/openai-python/compare/v2.6.1...v2.7.0)

### Features

* **api:** Realtime API token_limits, Hybrid searching ranking options ([5b43992](https://github.com/openai/openai-python/commit/5b4399219d7ed326411aec524d25ef2b8e3152fc))
* **api:** remove InputAudio from ResponseInputContent ([bd70a33](https://github.com/openai/openai-python/commit/bd70a33234741fa68c185105e4f53cc0275a2a50))


### Bug Fixes

* **client:** close streams without requiring full consumption ([d8bb7d6](https://github.com/openai/openai-python/commit/d8bb7d6d728c5481de4198eebe668b67803ae14a))
* **readme:** update realtime examples ([#2714](https://github.com/openai/openai-python/issues/2714)) ([d0370a8](https://github.com/openai/openai-python/commit/d0370a8d61fc2f710a34d8aad48f649a9683106d))
* **uploads:** avoid file handle leak ([4f1b691](https://github.com/openai/openai-python/commit/4f1b691ab4db41aebd397ec41942b43fb0f0743c))


### Chores

* **internal/tests:** avoid race condition with implicit client cleanup ([933d23b](https://github.com/openai/openai-python/commit/933d23bd8d7809c77e0796becfe052167d44d40a))
* **internal:** grammar fix (it's -&gt; its) ([f7e9e9e](https://github.com/openai/openai-python/commit/f7e9e9e4f43039f19a41375a6d2b2bdc2264dad7))

## 2.6.1 (2025-10-24)

Full Changelog: [v2.6.0...v2.6.1](https://github.com/openai/openai-python/compare/v2.6.0...v2.6.1)

### Bug Fixes

* **api:** docs updates ([d01a0c9](https://github.com/openai/openai-python/commit/d01a0c96ecb94c78b7e16546790c573704b7515b))


### Chores

* **client:** clean up custom translations code ([cfb9e25](https://github.com/openai/openai-python/commit/cfb9e25855b8eb020abe02cdd99566adf474e821))

## 2.6.0 (2025-10-20)

Full Changelog: [v2.5.0...v2.6.0](https://github.com/openai/openai-python/compare/v2.5.0...v2.6.0)

### Features

* **api:** Add responses.input_tokens.count ([6dd09e2](https://github.com/openai/openai-python/commit/6dd09e2829f385f72b28620888d91a4493c96772))


### Bug Fixes

* **api:** internal openapi updates ([caabd7c](https://github.com/openai/openai-python/commit/caabd7c81f0f557f66dc0089af460185a5816c11))

## 2.5.0 (2025-10-17)

Full Changelog: [v2.4.0...v2.5.0](https://github.com/openai/openai-python/compare/v2.4.0...v2.5.0)

### Features

* **api:** api update ([8b280d5](https://github.com/openai/openai-python/commit/8b280d57d6d361bc3a032e030158f6859c445291))


### Chores

* bump `httpx-aiohttp` version to 0.1.9 ([67f2f0a](https://github.com/openai/openai-python/commit/67f2f0afe51dab9d5899fe18b1a4e86b2c774d10))

## 2.4.0 (2025-10-16)

Full Changelog: [v2.3.0...v2.4.0](https://github.com/openai/openai-python/compare/v2.3.0...v2.4.0)

### Features

* **api:** Add support for gpt-4o-transcribe-diarize on audio/transcriptions endpoint ([bdbe9b8](https://github.com/openai/openai-python/commit/bdbe9b8f440209afa2979db4a9eda9579b3d2550))


### Chores

* fix dangling comment ([da14e99](https://github.com/openai/openai-python/commit/da14e9960608f7ade6f5cdf91967830c8a6c1657))
* **internal:** detect missing future annotations with ruff ([2672b8f](https://github.com/openai/openai-python/commit/2672b8f0726300f7c62c356f25545ef0b3c0bb2e))

## 2.3.0 (2025-10-10)

Full Changelog: [v2.2.0...v2.3.0](https://github.com/openai/openai-python/compare/v2.2.0...v2.3.0)

### Features

* **api:** comparison filter in/not in ([aa49f62](https://github.com/openai/openai-python/commit/aa49f626a6ea9d77ad008badfb3741e16232d62f))


### Chores

* **package:** bump jiter to &gt;=0.10.0 to support Python 3.14 ([#2618](https://github.com/openai/openai-python/issues/2618)) ([aa445ca](https://github.com/openai/openai-python/commit/aa445cab5c93c6908697fe98e73e16963330b141))

## 2.2.0 (2025-10-06)

Full Changelog: [v2.1.0...v2.2.0](https://github.com/openai/openai-python/compare/v2.1.0...v2.2.0)

### Features

* **api:** dev day 2025 launches ([38ac009](https://github.com/openai/openai-python/commit/38ac0093ebb3419b1e2280d0dc2d26c74a2bbbec))


### Bug Fixes

* **client:** add chatkit to beta resource ([de3e561](https://github.com/openai/openai-python/commit/de3e5619d0a85b17906a9416039ef309e820dc0f))

## 2.1.0 (2025-10-02)

Full Changelog: [v2.0.1...v2.1.0](https://github.com/openai/openai-python/compare/v2.0.1...v2.1.0)

### Features

* **api:** add support for realtime calls ([7f7925b](https://github.com/openai/openai-python/commit/7f7925b4074ecbf879714698000e10fa0519d51a))

## 2.0.1 (2025-10-01)

Full Changelog: [v2.0.0...v2.0.1](https://github.com/openai/openai-python/compare/v2.0.0...v2.0.1)

### Bug Fixes

* **api:** add status, approval_request_id to MCP tool call ([2a02255](https://github.com/openai/openai-python/commit/2a022553f83b636defcfda3b1c6f4b12d901357b))

## 2.0.0 (2025-09-30)

Full Changelog: [v1.109.1...v2.0.0](https://github.com/openai/openai-python/compare/v1.109.1...v2.0.0)

### ⚠ BREAKING CHANGES

* **api:** `ResponseFunctionToolCallOutputItem.output` and `ResponseCustomToolCallOutput.output` now return `string | Array<ResponseInputText | ResponseInputImage | ResponseInputFile>` instead of `string` only. This may break existing callsites that assume `output` is always a string.

### Features

* **api:** Support images and files for function call outputs in responses, BatchUsage ([4105376](https://github.com/openai/openai-python/commit/4105376a60293581371fd5635b805b717d24aa19))

## 1.109.1 (2025-09-24)

Full Changelog: [v1.109.0...v1.109.1](https://github.com/openai/openai-python/compare/v1.109.0...v1.109.1)

### Bug Fixes

* **compat:** compat with `pydantic&lt;2.8.0` when using additional fields ([5d95ecf](https://github.com/openai/openai-python/commit/5d95ecf7abd65f3e4e273be14c80f9b4cd91ffe8))

## 1.109.0 (2025-09-23)

Full Changelog: [v1.108.2...v1.109.0](https://github.com/openai/openai-python/compare/v1.108.2...v1.109.0)

### Features

* **api:** gpt-5-codex ([34502b5](https://github.com/openai/openai-python/commit/34502b5a175f8a10ea8694fcea38fe7308de89ef))

## 1.108.2 (2025-09-22)

Full Changelog: [v1.108.1...v1.108.2](https://github.com/openai/openai-python/compare/v1.108.1...v1.108.2)

### Bug Fixes

* **api:** fix mcp tool name ([fd1c673](https://github.com/openai/openai-python/commit/fd1c673fa8d5581b38c69c37aa4fd1fd251259a2))


### Chores

* **api:** openapi updates for conversations ([3224f6f](https://github.com/openai/openai-python/commit/3224f6f9b4221b954a8f63de66bcaab389164ee5))
* do not install brew dependencies in ./scripts/bootstrap by default ([6764b00](https://github.com/openai/openai-python/commit/6764b00bcb8aeab41e73d2fcaf6c7a18ea9f7909))
* improve example values ([20b58e1](https://github.com/openai/openai-python/commit/20b58e164f9f28b9fc562968263fa3eacc6f5c7c))

## 1.108.1 (2025-09-19)

Full Changelog: [v1.108.0...v1.108.1](https://github.com/openai/openai-python/compare/v1.108.0...v1.108.1)

### Features

* **api:** add reasoning_text ([18d8e12](https://github.com/openai/openai-python/commit/18d8e12061d1fd4e09d24986ff6e38c5063013e9))


### Chores

* **types:** change optional parameter type from NotGiven to Omit ([acc190a](https://github.com/openai/openai-python/commit/acc190a29526e64db6074e7f21aca800423c128c))

## 1.108.0 (2025-09-17)

Full Changelog: [v1.107.3...v1.108.0](https://github.com/openai/openai-python/compare/v1.107.3...v1.108.0)

### Features

* **api:** type updates for conversations, reasoning_effort and results for evals ([c2ee28c](https://github.com/openai/openai-python/commit/c2ee28c1b77eed98766fbb01cf1ad2ee240f412e))


### Chores

* **internal:** update pydantic dependency ([369d10a](https://github.com/openai/openai-python/commit/369d10a40dfe744f6bfc10c99eb1f58176500120))

## 1.107.3 (2025-09-15)

Full Changelog: [v1.107.2...v1.107.3](https://github.com/openai/openai-python/compare/v1.107.2...v1.107.3)

### Chores

* **api:** docs and spec refactoring ([9bab5da](https://github.com/openai/openai-python/commit/9bab5da1802c3575c58e73ed1470dd5fa61fd1d2))
* **tests:** simplify `get_platform` test ([0b1f6a2](https://github.com/openai/openai-python/commit/0b1f6a28d5a59e10873264e976d2e332903eef29))

## 1.107.2 (2025-09-12)

Full Changelog: [v1.107.1...v1.107.2](https://github.com/openai/openai-python/compare/v1.107.1...v1.107.2)

### Chores

* **api:** Minor docs and type updates for realtime ([ab6a10d](https://github.com/openai/openai-python/commit/ab6a10da4ed7e6386695b6f5f29149d4870f85c9))
* **tests:** simplify `get_platform` test ([01f03e0](https://github.com/openai/openai-python/commit/01f03e0ad1f9ab3f2ed8b7c13d652263c6d06378))

## 1.107.1 (2025-09-10)

Full Changelog: [v1.107.0...v1.107.1](https://github.com/openai/openai-python/compare/v1.107.0...v1.107.1)

### Chores

* **api:** fix realtime GA types ([570fc5a](https://github.com/openai/openai-python/commit/570fc5a28ada665fd658b24675361680cfeb086f))

## 1.107.0 (2025-09-08)

Full Changelog: [v1.106.1...v1.107.0](https://github.com/openai/openai-python/compare/v1.106.1...v1.107.0)

### Features

* **api:** ship the RealtimeGA API shape ([dc319d8](https://github.com/openai/openai-python/commit/dc319d8bbb3a20108399c1d15f98e63bdd84eb5c))


### Chores

* **internal:** codegen related update ([b79b7ca](https://github.com/openai/openai-python/commit/b79b7ca3a72009a036db0a344b500f616ca0443f))

## 1.106.1 (2025-09-04)

Full Changelog: [v1.106.0...v1.106.1](https://github.com/openai/openai-python/compare/v1.106.0...v1.106.1)

### Chores

* **internal:** move mypy configurations to `pyproject.toml` file ([ca413a2](https://github.com/openai/openai-python/commit/ca413a277496c3b883b103ad1138a886e89ae15e))

## 1.106.0 (2025-09-04)

Full Changelog: [v1.105.0...v1.106.0](https://github.com/openai/openai-python/compare/v1.105.0...v1.106.0)

### Features

* **client:** support callable api_key ([#2588](https://github.com/openai/openai-python/issues/2588)) ([e1bad01](https://github.com/openai/openai-python/commit/e1bad015b8a2b98bfee955a24bc931347a58efc1))
* improve future compat with pydantic v3 ([6645d93](https://github.com/openai/openai-python/commit/6645d9317a240982928b92c2f4af0381db6edc09))

## 1.105.0 (2025-09-03)

Full Changelog: [v1.104.2...v1.105.0](https://github.com/openai/openai-python/compare/v1.104.2...v1.105.0)

### Features

* **api:** Add gpt-realtime models ([8502041](https://github.com/openai/openai-python/commit/85020414808314df9cb42e020b11baff12f18f16))

## 1.104.2 (2025-09-02)

Full Changelog: [v1.104.1...v1.104.2](https://github.com/openai/openai-python/compare/v1.104.1...v1.104.2)

### Bug Fixes

* **types:** add aliases back for web search tool types ([2521cd8](https://github.com/openai/openai-python/commit/2521cd8445906e418dbae783b0d7c375ad91d49d))

## 1.104.1 (2025-09-02)

Full Changelog: [v1.104.0...v1.104.1](https://github.com/openai/openai-python/compare/v1.104.0...v1.104.1)

### Chores

* **api:** manual updates for ResponseInputAudio ([0db5061](https://github.com/openai/openai-python/commit/0db50619663656ba97bba30ab640bbb33683d196))

## 1.104.0 (2025-09-02)

Full Changelog: [v1.103.0...v1.104.0](https://github.com/openai/openai-python/compare/v1.103.0...v1.104.0)

### Features

* **types:** replace List[str] with SequenceNotStr in params ([bc00bda](https://github.com/openai/openai-python/commit/bc00bda880a80089be8a1758c016266ca72dab2c))


### Bug Fixes

* **types:** update more types to use SequenceNotStr ([cff135c](https://github.com/openai/openai-python/commit/cff135cb7059ef1bf8f9b101a83529fc0cee37c4))
* **types:** update some types to SequenceNotStr ([03f8b88](https://github.com/openai/openai-python/commit/03f8b88a0d428b74a7822e678a60d0ef106ea961))


### Chores

* remove unused import ([ac7795b](https://github.com/openai/openai-python/commit/ac7795b50d956ec5dc468302e8e3579a0467edcb))

## 1.103.0 (2025-09-02)

Full Changelog: [v1.102.0...v1.103.0](https://github.com/openai/openai-python/compare/v1.102.0...v1.103.0)

### Features

* **api:** realtime API updates ([b7c2ddc](https://github.com/openai/openai-python/commit/b7c2ddc5e5dedda01015b3d0e14ea6eb68c282d3))


### Bug Fixes

* **responses:** add missing params to stream() method ([bfc0673](https://github.com/openai/openai-python/commit/bfc06732ffe3764cb95cef9f23b4b5c0d312826a))


### Chores

* bump `inline-snapshot` version to 0.28.0 ([#2590](https://github.com/openai/openai-python/issues/2590)) ([a6b0872](https://github.com/openai/openai-python/commit/a6b087226587d4cc4f59f1f09a595921b2823ef2))
* **client:** format imports ([7ae3020](https://github.com/openai/openai-python/commit/7ae3020b3ca7de21e6e9a0a1c40908e655f6cad5))
* **internal:** add Sequence related utils ([d3d72b9](https://github.com/openai/openai-python/commit/d3d72b9ce3c0885bf2b6934ac57d9e84f8653208))
* **internal:** fix formatting ([3ab273f](https://github.com/openai/openai-python/commit/3ab273f21e601f088be7502b7bb5d249fc386d6a))
* **internal:** minor formatting change ([478a348](https://github.com/openai/openai-python/commit/478a34881c968e9cab9d93ac2cf8da2fcb37c46c))
* **internal:** update pyright exclude list ([66e440f](https://github.com/openai/openai-python/commit/66e440fac3ca388400392c64211450dedc491c11))

## 1.102.0 (2025-08-26)

Full Changelog: [v1.101.0...v1.102.0](https://github.com/openai/openai-python/compare/v1.101.0...v1.102.0)

### Features

* **api:** add web search filters ([1c199a8](https://github.com/openai/openai-python/commit/1c199a8dc85f773ae656fe850fdfb80b91f8f6b1))


### Bug Fixes

* avoid newer type syntax ([bd0c668](https://github.com/openai/openai-python/commit/bd0c668d754b89c78c2c9ad2e081258c04aaece6))


### Chores

* **internal:** change ci workflow machines ([3e129d5](https://github.com/openai/openai-python/commit/3e129d5e49f6391dea7497132cb3cfed8e5dd8ee))
* **internal:** codegen related update ([b6dc170](https://github.com/openai/openai-python/commit/b6dc170832d719fc5028cfe234748c22e6e168aa))

## 1.101.0 (2025-08-21)

Full Changelog: [v1.100.3...v1.101.0](https://github.com/openai/openai-python/compare/v1.100.3...v1.101.0)

### Features

* **api:** Add connectors support for MCP tool ([a47f962](https://github.com/openai/openai-python/commit/a47f962daf579c142b8af5579be732772b688a29))
* **api:** adding support for /v1/conversations to the API ([e30bcbc](https://github.com/openai/openai-python/commit/e30bcbc0cb7c827af779bee6971f976261abfb67))


### Chores

* update github action ([7333b28](https://github.com/openai/openai-python/commit/7333b282718a5f6977f30e1a2548207b3a089bd4))

## 1.100.3 (2025-08-20)

Full Changelog: [v1.100.2...v1.100.3](https://github.com/openai/openai-python/compare/v1.100.2...v1.100.3)

### Chores

* **internal/ci:** setup breaking change detection ([ca2f936](https://github.com/openai/openai-python/commit/ca2f93600238e875f26395faf6afbefaf15b7c97))

## 1.100.2 (2025-08-19)

Full Changelog: [v1.100.1...v1.100.2](https://github.com/openai/openai-python/compare/v1.100.1...v1.100.2)

### Chores

* **api:** accurately represent shape for verbosity on Chat Completions ([c39d5fd](https://github.com/openai/openai-python/commit/c39d5fd3f5429c6d41f257669a1dd4c67a477455))

## 1.100.1 (2025-08-18)

Full Changelog: [v1.100.0...v1.100.1](https://github.com/openai/openai-python/compare/v1.100.0...v1.100.1)

### Bug Fixes

* **types:** revert response text config deletion ([ac4fb19](https://github.com/openai/openai-python/commit/ac4fb1922ae125c8310c30e402932e8bb2976f58))

## 1.100.0 (2025-08-18)

Full Changelog: [v1.99.9...v1.100.0](https://github.com/openai/openai-python/compare/v1.99.9...v1.100.0)

### Features

* **api:** add new text parameters, expiration options ([e3dfa7c](https://github.com/openai/openai-python/commit/e3dfa7c417b8c750ff62d98650e75e72ad9b1477))

## 1.99.9 (2025-08-12)

Full Changelog: [v1.99.8...v1.99.9](https://github.com/openai/openai-python/compare/v1.99.8...v1.99.9)

### Bug Fixes

* **types:** actually fix ChatCompletionMessageToolCall type ([20cb0c8](https://github.com/openai/openai-python/commit/20cb0c86d598e196386ff43db992f6497eb756d0))

## 1.99.8 (2025-08-11)

Full Changelog: [v1.99.7...v1.99.8](https://github.com/openai/openai-python/compare/v1.99.7...v1.99.8)

### Bug Fixes

* **internal/tests:** correct snapshot update comment ([2784a7a](https://github.com/openai/openai-python/commit/2784a7a7da24ddba74b5717f07d67546864472b9))
* **types:** revert ChatCompletionMessageToolCallUnion breaking change ([ba54e03](https://github.com/openai/openai-python/commit/ba54e03bc2d21825d891685bf3bad4a9253cbeb0))


### Chores

* **internal/tests:** add inline snapshot format command ([8107db8](https://github.com/openai/openai-python/commit/8107db8ff738baa65fe4cf2f2d7f1acd29219c78))
* **internal:** fix formatting ([f03a03d](https://github.com/openai/openai-python/commit/f03a03de8c84740209d021598ff8bf56b6d3c684))
* **tests:** add responses output_text test ([971347b](https://github.com/openai/openai-python/commit/971347b3a05f79c51abd11c86b382ca73c28cefb))


### Refactors

* **tests:** share snapshot utils ([791c567](https://github.com/openai/openai-python/commit/791c567cd87fb8d587965773b1da0404c7848c68))

## 1.99.7 (2025-08-11)

Full Changelog: [v1.99.6...v1.99.7](https://github.com/openai/openai-python/compare/v1.99.6...v1.99.7)

### Bug Fixes

* **types:** rename ChatCompletionMessageToolCallParam ([48085e2](https://github.com/openai/openai-python/commit/48085e2f473799d079e71d48d2f5612a6fbeb976))
* **types:** revert ChatCompletionMessageToolCallParam to a TypedDict ([c8e9cec](https://github.com/openai/openai-python/commit/c8e9cec5c93cc022fff546f27161717f769d1f81))

## 1.99.6 (2025-08-09)

Full Changelog: [v1.99.5...v1.99.6](https://github.com/openai/openai-python/compare/v1.99.5...v1.99.6)

### Bug Fixes

* **types:** re-export more tool call types ([8fe5741](https://github.com/openai/openai-python/commit/8fe574131cfe8f0453788cc6105d22834e7c102f))


### Chores

* **internal:** update comment in script ([e407bb5](https://github.com/openai/openai-python/commit/e407bb52112ad73e5eedf929434ee4ff7ac5a5a8))
* update @stainless-api/prism-cli to v5.15.0 ([a1883fc](https://github.com/openai/openai-python/commit/a1883fcdfa02b81e5129bdb43206597a51f885fa))

## 1.99.5 (2025-08-08)

Full Changelog: [v1.99.4...v1.99.5](https://github.com/openai/openai-python/compare/v1.99.4...v1.99.5)

### Bug Fixes

* **client:** fix verbosity parameter location in Responses ([2764ff4](https://github.com/openai/openai-python/commit/2764ff459eb8b309d25b39b40e363b16a5b95019))

## 1.99.4 (2025-08-08)

Full Changelog: [v1.99.3...v1.99.4](https://github.com/openai/openai-python/compare/v1.99.3...v1.99.4)

### Bug Fixes

* **types:** rename chat completion tool ([8d3bf88](https://github.com/openai/openai-python/commit/8d3bf88f5bc11cf30b8b050c24b2cc5a3807614f))
* **types:** revert ChatCompletionToolParam to a TypedDict ([3f4ae72](https://github.com/openai/openai-python/commit/3f4ae725af53e631ddc128c1c6862ecf0b08e073))

## 1.99.3 (2025-08-07)

Full Changelog: [v1.99.2...v1.99.3](https://github.com/openai/openai-python/compare/v1.99.2...v1.99.3)

### Bug Fixes

* **responses:** add output_text back ([585a4f1](https://github.com/openai/openai-python/commit/585a4f15e5a088bf8afee745bc4a7803775ac283))

## 1.99.2 (2025-08-07)

Full Changelog: [v1.99.1...v1.99.2](https://github.com/openai/openai-python/compare/v1.99.1...v1.99.2)

### Features

* **api:** adds GPT-5 and new API features: platform.openai.com/docs/guides/gpt-5 ([ed370d8](https://github.com/openai/openai-python/commit/ed370d805e4d5d1ec14a136f5b2516751277059f))


### Bug Fixes

* **types:** correct tool types ([0c57bd7](https://github.com/openai/openai-python/commit/0c57bd7f2183a20b714d04edea380a4df0464a40))


### Chores

* **tests:** bump inline-snapshot dependency ([e236fde](https://github.com/openai/openai-python/commit/e236fde99a335fcaac9760f324e4807ce2cf7cba))

## 1.99.1 (2025-08-05)

Full Changelog: [v1.99.0...v1.99.1](https://github.com/openai/openai-python/compare/v1.99.0...v1.99.1)

### Bug Fixes

* **internal:** correct event imports ([2a6d143](https://github.com/openai/openai-python/commit/2a6d1436288a07f67f6afefe5c0b5d6ae32d7e70))

## 1.99.0 (2025-08-05)

Full Changelog: [v1.98.0...v1.99.0](https://github.com/openai/openai-python/compare/v1.98.0...v1.99.0)

### Features

* **api:** manual updates ([d4aa726](https://github.com/openai/openai-python/commit/d4aa72602bf489ef270154b881b3967d497d4220))
* **client:** support file upload requests ([0772e6e](https://github.com/openai/openai-python/commit/0772e6ed8310e15539610b003dd73f72f474ec0c))


### Bug Fixes

* add missing prompt_cache_key & prompt_cache_key params ([00b49ae](https://github.com/openai/openai-python/commit/00b49ae8d44ea396ac0536fc3ce4658fc669e2f5))


### Chores

* **internal:** fix ruff target version ([aa6b252](https://github.com/openai/openai-python/commit/aa6b252ae0f25f195dede15755e05dd2f542f42d))

## 1.98.0 (2025-07-30)

Full Changelog: [v1.97.2...v1.98.0](https://github.com/openai/openai-python/compare/v1.97.2...v1.98.0)

### Features

* **api:** manual updates ([88a8036](https://github.com/openai/openai-python/commit/88a8036c5ea186f36c57029ef4501a0833596f56))

## 1.97.2 (2025-07-30)

Full Changelog: [v1.97.1...v1.97.2](https://github.com/openai/openai-python/compare/v1.97.1...v1.97.2)

### Chores

* **client:** refactor streaming slightly to better future proof it ([71c0c74](https://github.com/openai/openai-python/commit/71c0c747132221b798e419bc5a37baf67173d34e))
* **project:** add settings file for vscode ([29c22c9](https://github.com/openai/openai-python/commit/29c22c90fd229983355089f95d0bba9de15efedb))

## 1.97.1 (2025-07-22)

Full Changelog: [v1.97.0...v1.97.1](https://github.com/openai/openai-python/compare/v1.97.0...v1.97.1)

### Bug Fixes

* **parsing:** ignore empty metadata ([58c359f](https://github.com/openai/openai-python/commit/58c359ff67fd6103268e4405600fd58844b6f27b))
* **parsing:** parse extra field types ([d524b7e](https://github.com/openai/openai-python/commit/d524b7e201418ccc9b5c2206da06d1be011808e5))


### Chores

* **api:** event shapes more accurate ([f3a9a92](https://github.com/openai/openai-python/commit/f3a9a9229280ecb7e0b2779dd44290df6d9824ef))

## 1.97.0 (2025-07-16)

Full Changelog: [v1.96.1...v1.97.0](https://github.com/openai/openai-python/compare/v1.96.1...v1.97.0)

### Features

* **api:** manual updates ([ed8e899](https://github.com/openai/openai-python/commit/ed8e89953d11bd5f44fa531422bdbb7a577ab426))

## 1.96.1 (2025-07-15)

Full Changelog: [v1.96.0...v1.96.1](https://github.com/openai/openai-python/compare/v1.96.0...v1.96.1)

### Chores

* **api:** update realtime specs ([b68b71b](https://github.com/openai/openai-python/commit/b68b71b178719e0b49ecfe34486b9d9ac0627924))

## 1.96.0 (2025-07-15)

Full Changelog: [v1.95.1...v1.96.0](https://github.com/openai/openai-python/compare/v1.95.1...v1.96.0)

### Features

* clean up environment call outs ([87c2e97](https://github.com/openai/openai-python/commit/87c2e979e0ec37347b7f595c2696408acd25fe20))


### Chores

* **api:** update realtime specs, build config ([bf06d88](https://github.com/openai/openai-python/commit/bf06d88b33f9af82a51d9a8af5b7a38925906f7a))

## 1.95.1 (2025-07-11)

Full Changelog: [v1.95.0...v1.95.1](https://github.com/openai/openai-python/compare/v1.95.0...v1.95.1)

### Bug Fixes

* **client:** don't send Content-Type header on GET requests ([182b763](https://github.com/openai/openai-python/commit/182b763065fbaaf68491a7e4a15fcb23cac361de))

## 1.95.0 (2025-07-10)

Full Changelog: [v1.94.0...v1.95.0](https://github.com/openai/openai-python/compare/v1.94.0...v1.95.0)

### Features

* **api:** add file_url, fix event ID ([265e216](https://github.com/openai/openai-python/commit/265e216396196d66cdfb5f92c5ef1a2a6ff27b5b))


### Chores

* **readme:** fix version rendering on pypi ([1eee5ca](https://github.com/openai/openai-python/commit/1eee5cabf2fd93877cd3ba85d0c6ed2ffd5f159f))

## 1.94.0 (2025-07-10)

Full Changelog: [v1.93.3...v1.94.0](https://github.com/openai/openai-python/compare/v1.93.3...v1.94.0)

### Features

* **api:** return better error message on missing embedding ([#2369](https://github.com/openai/openai-python/issues/2369)) ([e53464a](https://github.com/openai/openai-python/commit/e53464ae95f6a041f3267762834e6156c5ce1b57))

## 1.93.3 (2025-07-09)

Full Changelog: [v1.93.2...v1.93.3](https://github.com/openai/openai-python/compare/v1.93.2...v1.93.3)

### Bug Fixes

* **parsing:** correctly handle nested discriminated unions ([fc8a677](https://github.com/openai/openai-python/commit/fc8a67715d8f1b45d8639b8b6f9f6590fe358734))

## 1.93.2 (2025-07-08)

Full Changelog: [v1.93.1...v1.93.2](https://github.com/openai/openai-python/compare/v1.93.1...v1.93.2)

### Chores

* **internal:** bump pinned h11 dep ([4fca6ae](https://github.com/openai/openai-python/commit/4fca6ae2d0d7f27cbac8d06c3917932767c8c6b8))
* **package:** mark python 3.13 as supported ([2229047](https://github.com/openai/openai-python/commit/2229047b8a549df16c617bddfe3b4521cfd257a5))

## 1.93.1 (2025-07-07)

Full Changelog: [v1.93.0...v1.93.1](https://github.com/openai/openai-python/compare/v1.93.0...v1.93.1)

### Bug Fixes

* **ci:** correct conditional ([de6a9ce](https://github.com/openai/openai-python/commit/de6a9ce078731d60b0bdc42a9322548c575f11a3))
* **responses:** add missing arguments to parse ([05590ec](https://github.com/openai/openai-python/commit/05590ec2a96399afd05baf5a3ee1d9a744f09c40))
* **vector stores:** add missing arguments to files.create_and_poll ([3152134](https://github.com/openai/openai-python/commit/3152134510532ec7c522d6b50a820deea205b602))
* **vector stores:** add missing arguments to files.upload_and_poll ([9d4f425](https://github.com/openai/openai-python/commit/9d4f42569d5b59311453b1b11ee1dd2e8a271268))


### Chores

* **ci:** change upload type ([cd4aa88](https://github.com/openai/openai-python/commit/cd4aa889c50581d861728c9606327992485f0d0d))
* **ci:** only run for pushes and fork pull requests ([f89c7eb](https://github.com/openai/openai-python/commit/f89c7eb46c6f081254715d75543cbee3ffa83822))
* **internal:** codegen related update ([bddb8d2](https://github.com/openai/openai-python/commit/bddb8d2091455920e8526068d64f3f8a5cac7ae6))
* **tests:** ensure parse method is in sync with create ([4f58e18](https://github.com/openai/openai-python/commit/4f58e187c12dc8b2c33e9cca284b0429e5cc4de5))
* **tests:** ensure vector store files create and poll method is in sync ([0fe75a2](https://github.com/openai/openai-python/commit/0fe75a28f6109b2d25b015dc99472a06693e0e9f))

## 1.93.0 (2025-06-27)

Full Changelog: [v1.92.3...v1.93.0](https://github.com/openai/openai-python/compare/v1.92.3...v1.93.0)

### Features

* **cli:** add support for fine_tuning.jobs ([#1224](https://github.com/openai/openai-python/issues/1224)) ([e362bfd](https://github.com/openai/openai-python/commit/e362bfd10dfd04176560b964470ab0c517c601f3))

## 1.92.3 (2025-06-27)

Full Changelog: [v1.92.2...v1.92.3](https://github.com/openai/openai-python/compare/v1.92.2...v1.92.3)

### Bug Fixes

* **client:** avoid encoding error with empty API keys ([5a3e64e](https://github.com/openai/openai-python/commit/5a3e64e0cc761dbaa613fb22ec16e7e73c3bcf72))


### Documentation

* **examples/realtime:** mention macOS requirements ([#2142](https://github.com/openai/openai-python/issues/2142)) ([27bf6b2](https://github.com/openai/openai-python/commit/27bf6b2a933c61d5ec23fd266148af888f69f5c1))

## 1.92.2 (2025-06-26)

Full Changelog: [v1.92.1...v1.92.2](https://github.com/openai/openai-python/compare/v1.92.1...v1.92.2)

### Chores

* **api:** remove unsupported property ([ec24408](https://github.com/openai/openai-python/commit/ec2440864e03278144d7f58b97c31d87903e0843))

## 1.92.1 (2025-06-26)

Full Changelog: [v1.92.0...v1.92.1](https://github.com/openai/openai-python/compare/v1.92.0...v1.92.1)

### Chores

* **client:** sync stream/parse methods over ([e2536cf](https://github.com/openai/openai-python/commit/e2536cfd74224047cece9c2ad86f0ffe51c0667c))
* **docs:** update README to include links to docs on Webhooks ([ddbf9f1](https://github.com/openai/openai-python/commit/ddbf9f1dc47a32257716189f2056b45933328c9c))

## 1.92.0 (2025-06-26)

Full Changelog: [v1.91.0...v1.92.0](https://github.com/openai/openai-python/compare/v1.91.0...v1.92.0)

### Features

* **api:** webhook and deep research support ([d3bb116](https://github.com/openai/openai-python/commit/d3bb116f34f470502f902b88131deec43a953b12))
* **client:** move stream and parse out of beta ([0e358ed](https://github.com/openai/openai-python/commit/0e358ed66b317038705fb38958a449d284f3cb88))


### Bug Fixes

* **ci:** release-doctor — report correct token name ([ff8c556](https://github.com/openai/openai-python/commit/ff8c5561e44e8a0902732b5934c97299d2c98d4e))


### Chores

* **internal:** add tests for breaking change detection ([710fe8f](https://github.com/openai/openai-python/commit/710fe8fd5f9e33730338341680152d3f2556dfa0))
* **tests:** skip some failing tests on the latest python versions ([93ccc38](https://github.com/openai/openai-python/commit/93ccc38a8ef1575d77d33d031666d07d10e4af72))

## 1.91.0 (2025-06-23)

Full Changelog: [v1.90.0...v1.91.0](https://github.com/openai/openai-python/compare/v1.90.0...v1.91.0)

### Features

* **api:** update api shapes for usage and code interpreter ([060d566](https://github.com/openai/openai-python/commit/060d5661e4a1fcdb953c52facd3e668ee80f9295))

## 1.90.0 (2025-06-20)

Full Changelog: [v1.89.0...v1.90.0](https://github.com/openai/openai-python/compare/v1.89.0...v1.90.0)

### Features

* **api:** make model and inputs not required to create response ([11bd62e](https://github.com/openai/openai-python/commit/11bd62eb7e46eec748edaf2e0cecf253ffc1202c))

## 1.89.0 (2025-06-20)

Full Changelog: [v1.88.0...v1.89.0](https://github.com/openai/openai-python/compare/v1.88.0...v1.89.0)

### Features

* **client:** add support for aiohttp ([9218b07](https://github.com/openai/openai-python/commit/9218b07727bf6f6eb00953df66de6ab061fecddb))


### Bug Fixes

* **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([35bcc4b](https://github.com/openai/openai-python/commit/35bcc4b80bdbaa31108650f2a515902e83794e5a))


### Chores

* **readme:** update badges ([68044ee](https://github.com/openai/openai-python/commit/68044ee85d1bf324b17d3f60c914df4725d47fc8))

## 1.88.0 (2025-06-17)

Full Changelog: [v1.87.0...v1.88.0](https://github.com/openai/openai-python/compare/v1.87.0...v1.88.0)

### Features

* **api:** manual updates ([5d18a84](https://github.com/openai/openai-python/commit/5d18a8448ecbe31597e98ec7f64d7050c831901e))


### Chores

* **ci:** enable for pull requests ([542b0ce](https://github.com/openai/openai-python/commit/542b0ce98f14ccff4f9e1bcbd3a9ea5e4f846638))
* **internal:** minor formatting ([29d723d](https://github.com/openai/openai-python/commit/29d723d1f1baf2a5843293c8647dc7baa16d56d1))

## 1.87.0 (2025-06-16)

Full Changelog: [v1.86.0...v1.87.0](https://github.com/openai/openai-python/compare/v1.86.0...v1.87.0)

### Features

* **api:** add reusable prompt IDs ([36bfe6e](https://github.com/openai/openai-python/commit/36bfe6e8ae12a31624ba1a360d9260f0aeec448a))


### Bug Fixes

* **client:** update service_tier on `client.beta.chat.completions` ([aa488d5](https://github.com/openai/openai-python/commit/aa488d5cf210d8640f87216538d4ff79d7181f2a))


### Chores

* **internal:** codegen related update ([b1a31e5](https://github.com/openai/openai-python/commit/b1a31e5ef4387d9f82cf33f9461371651788d381))
* **internal:** update conftest.py ([bba0213](https://github.com/openai/openai-python/commit/bba0213842a4c161f2235e526d50901a336eecef))
* **tests:** add tests for httpx client instantiation & proxies ([bc93712](https://github.com/openai/openai-python/commit/bc9371204f457aee9ed9b6ec1b61c2084f32faf1))

## 1.86.0 (2025-06-10)

Full Changelog: [v1.85.0...v1.86.0](https://github.com/openai/openai-python/compare/v1.85.0...v1.86.0)

### Features

* **api:** Add o3-pro model IDs ([d8dd80b](https://github.com/openai/openai-python/commit/d8dd80b1b4e6c73687d7acb6c3f62f0bf4b8282c))

## 1.85.0 (2025-06-09)

Full Changelog: [v1.84.0...v1.85.0](https://github.com/openai/openai-python/compare/v1.84.0...v1.85.0)

### Features

* **api:** Add tools and structured outputs to evals ([002cc7b](https://github.com/openai/openai-python/commit/002cc7bb3c315d95b81c2e497f55d21be7fd26f8))


### Bug Fixes

* **responses:** support raw responses for `parse()` ([d459943](https://github.com/openai/openai-python/commit/d459943cc1c81cf9ce5c426edd3ef9112fdf6723))

## 1.84.0 (2025-06-03)

Full Changelog: [v1.83.0...v1.84.0](https://github.com/openai/openai-python/compare/v1.83.0...v1.84.0)

### Features

* **api:** add new realtime and audio models, realtime session options ([0acd0da](https://github.com/openai/openai-python/commit/0acd0da6bc0468c6c857711bc5e77d0bc6d31be6))


### Chores

* **api:** update type names ([1924559](https://github.com/openai/openai-python/commit/192455913b38bf0323ddd0e2b1499b114e2111a1))

## 1.83.0 (2025-06-02)

Full Changelog: [v1.82.1...v1.83.0](https://github.com/openai/openai-python/compare/v1.82.1...v1.83.0)

### Features

* **api:** Config update for pakrym-stream-param ([88bcf3a](https://github.com/openai/openai-python/commit/88bcf3af9ce8ffa8347547d4d30aacac1ceba939))
* **client:** add follow_redirects request option ([26d715f](https://github.com/openai/openai-python/commit/26d715f4e9b0f2b19e2ac16acc796a949338e1e1))


### Bug Fixes

* **api:** Fix evals and code interpreter interfaces ([2650159](https://github.com/openai/openai-python/commit/2650159f6d01f6eb481cf8c7942142e4fd21ce44))
* **client:** return binary content from `get /containers/{container_id}/files/{file_id}/content` ([f7c80c4](https://github.com/openai/openai-python/commit/f7c80c4368434bd0be7436375076ba33a62f63b5))


### Chores

* **api:** mark some methods as deprecated ([3e2ca57](https://github.com/openai/openai-python/commit/3e2ca571cb6cdd9e15596590605b2f98a4c5a42e))
* deprecate Assistants API ([9d166d7](https://github.com/openai/openai-python/commit/9d166d795e03dea49af680ec9597e9497522187c))
* **docs:** remove reference to rye shell ([c7978e9](https://github.com/openai/openai-python/commit/c7978e9f1640c311022988fcd716cbb5c865daa8))

## 1.82.1 (2025-05-29)

Full Changelog: [v1.82.0...v1.82.1](https://github.com/openai/openai-python/compare/v1.82.0...v1.82.1)

### Bug Fixes

* **responses:** don't include `parsed_arguments` when re-serialising ([6d04193](https://github.com/openai/openai-python/commit/6d041937963ce452affcfb3553146ee51acfeb7a))


### Chores

* **internal:** fix release workflows ([361a909](https://github.com/openai/openai-python/commit/361a909a0cc83e5029ea425fd72202ffa8d1a46a))

## 1.82.0 (2025-05-22)

Full Changelog: [v1.81.0...v1.82.0](https://github.com/openai/openai-python/compare/v1.81.0...v1.82.0)

### Features

* **api:** new streaming helpers for background responses ([2a65d4d](https://github.com/openai/openai-python/commit/2a65d4de0aaba7801edd0df10f225530fd4969bd))


### Bug Fixes

* **azure:** mark images/edits as a deployment endpoint [#2371](https://github.com/openai/openai-python/issues/2371) ([5d1d5b4](https://github.com/openai/openai-python/commit/5d1d5b4b6072afe9fd7909b1a36014c8c11c1ad6))


### Documentation

* **readme:** another async example fix ([9ec8289](https://github.com/openai/openai-python/commit/9ec8289041f395805c67efd97847480f84eb9dac))
* **readme:** fix async example ([37d0b25](https://github.com/openai/openai-python/commit/37d0b25b6e82cd381e5d1aa6e28f1a1311d02353))

## 1.81.0 (2025-05-21)

Full Changelog: [v1.80.0...v1.81.0](https://github.com/openai/openai-python/compare/v1.80.0...v1.81.0)

### Features

* **api:** add container endpoint ([054a210](https://github.com/openai/openai-python/commit/054a210289d7e0db22d2d2a61bbe4d4d9cc0cb47))

## 1.80.0 (2025-05-21)

Full Changelog: [v1.79.0...v1.80.0](https://github.com/openai/openai-python/compare/v1.79.0...v1.80.0)

### Features

* **api:** new API tools ([d36ae52](https://github.com/openai/openai-python/commit/d36ae528d55fe87067c4b8c6b2c947cbad5e5002))


### Chores

* **docs:** grammar improvements ([e746145](https://github.com/openai/openai-python/commit/e746145a12b5335d8841aff95c91bbbde8bae8e3))

## 1.79.0 (2025-05-16)

Full Changelog: [v1.78.1...v1.79.0](https://github.com/openai/openai-python/compare/v1.78.1...v1.79.0)

### Features

* **api:** further updates for evals API ([32c99a6](https://github.com/openai/openai-python/commit/32c99a6f5885d4bf3511a7f06b70000edd274301))
* **api:** manual updates ([25245e5](https://github.com/openai/openai-python/commit/25245e5e3d0713abfb65b760aee1f12bc61deb41))
* **api:** responses x eval api ([fd586cb](https://github.com/openai/openai-python/commit/fd586cbdf889c9a5c6b9be177ff02fbfffa3eba5))
* **api:** Updating Assistants and Evals API schemas ([98ba7d3](https://github.com/openai/openai-python/commit/98ba7d355551213a13803f68d5642eecbb4ffd39))


### Bug Fixes

* fix create audio transcription endpoint ([e9a89ab](https://github.com/openai/openai-python/commit/e9a89ab7b6387610e433550207a23973b7edda3a))


### Chores

* **ci:** fix installation instructions ([f26c5fc](https://github.com/openai/openai-python/commit/f26c5fc85d98d700b68cb55c8be5d15983a9aeaf))
* **ci:** upload sdks to package manager ([861f105](https://github.com/openai/openai-python/commit/861f1055768168ab04987a42efcd32a07bc93542))

## 1.78.1 (2025-05-12)

Full Changelog: [v1.78.0...v1.78.1](https://github.com/openai/openai-python/compare/v1.78.0...v1.78.1)

### Bug Fixes

* **internal:** fix linting due to broken __test__ annotation ([5a7d7a0](https://github.com/openai/openai-python/commit/5a7d7a081138c6473bff44e60d439812ecb85cdf))
* **package:** support direct resource imports ([2293fc0](https://github.com/openai/openai-python/commit/2293fc0dd23a9c756067cdc22b39c18448f35feb))

## 1.78.0 (2025-05-08)

Full Changelog: [v1.77.0...v1.78.0](https://github.com/openai/openai-python/compare/v1.77.0...v1.78.0)

### Features

* **api:** Add reinforcement fine-tuning api support ([bebe361](https://github.com/openai/openai-python/commit/bebe36104bd3062d09ab9bbfb4bacfc99e737cb2))


### Bug Fixes

* ignore errors in isinstance() calls on LazyProxy subclasses ([#2343](https://github.com/openai/openai-python/issues/2343)) ([52cbbdf](https://github.com/openai/openai-python/commit/52cbbdf2207567741f16d18f1ea1b0d13d667375)), closes [#2056](https://github.com/openai/openai-python/issues/2056)


### Chores

* **internal:** update proxy tests ([b8e848d](https://github.com/openai/openai-python/commit/b8e848d5fb58472cbfa27fb3ed01efc25a05d944))
* use lazy imports for module level client ([4d0f409](https://github.com/openai/openai-python/commit/4d0f409e79a18cce9855fe076f5a50e52b8bafd8))
* use lazy imports for resources ([834813c](https://github.com/openai/openai-python/commit/834813c5cb1a84effc34e5eabed760393e1de806))

## 1.77.0 (2025-05-02)

Full Changelog: [v1.76.2...v1.77.0](https://github.com/openai/openai-python/compare/v1.76.2...v1.77.0)

### Features

* **api:** add image sizes, reasoning encryption ([473469a](https://github.com/openai/openai-python/commit/473469afa1a5f0a03f727bdcdadb9fd57872f9c5))


### Bug Fixes

* **parsing:** handle whitespace only strings ([#2007](https://github.com/openai/openai-python/issues/2007)) ([246bc5b](https://github.com/openai/openai-python/commit/246bc5b7559887840717667a0dad465caef66c3b))


### Chores

* only strip leading whitespace ([8467d66](https://github.com/openai/openai-python/commit/8467d666e0ddf1a9f81b8769a5c8a2fef1de20c1))

## 1.76.2 (2025-04-29)

Full Changelog: [v1.76.1...v1.76.2](https://github.com/openai/openai-python/compare/v1.76.1...v1.76.2)

### Chores

* **api:** API spec cleanup ([0a4d3e2](https://github.com/openai/openai-python/commit/0a4d3e2b495d22dd42ce1773b870554c64f9b3b2))

## 1.76.1 (2025-04-29)

Full Changelog: [v1.76.0...v1.76.1](https://github.com/openai/openai-python/compare/v1.76.0...v1.76.1)

### Chores

* broadly detect json family of content-type headers ([b4b1b08](https://github.com/openai/openai-python/commit/b4b1b086b512eecc0ada7fc1efa45eb506982f13))
* **ci:** only use depot for staging repos ([35312d8](https://github.com/openai/openai-python/commit/35312d80e6bbc1a61d06ad253af9a713b5ef040c))
* **ci:** run on more branches and use depot runners ([a6a45d4](https://github.com/openai/openai-python/commit/a6a45d4af8a4d904b37573a9b223d56106b4887d))

## 1.76.0 (2025-04-23)

Full Changelog: [v1.75.0...v1.76.0](https://github.com/openai/openai-python/compare/v1.75.0...v1.76.0)

### Features

* **api:** adding new image model support ([74d7692](https://github.com/openai/openai-python/commit/74d7692e94c9dca96db8793809d75631c22dbb87))


### Bug Fixes

* **pydantic v1:** more robust `ModelField.annotation` check ([#2163](https://github.com/openai/openai-python/issues/2163)) ([7351b12](https://github.com/openai/openai-python/commit/7351b12bc981f56632b92342d9ef26f6fb28d540))
* **pydantic v1:** more robust ModelField.annotation check ([eba7856](https://github.com/openai/openai-python/commit/eba7856db55afb8cb44376a0248587549f7bc65f))


### Chores

* **ci:** add timeout thresholds for CI jobs ([0997211](https://github.com/openai/openai-python/commit/09972119df5dd4c7c8db137c721364787e22d4c6))
* **internal:** fix list file params ([da2113c](https://github.com/openai/openai-python/commit/da2113c60b50b4438459325fcd38d55df3f63d8e))
* **internal:** import reformatting ([b425fb9](https://github.com/openai/openai-python/commit/b425fb906f62550c3669b09b9d8575f3d4d8496b))
* **internal:** minor formatting changes ([aed1d76](https://github.com/openai/openai-python/commit/aed1d767898324cf90328db329e04e89a77579c3))
* **internal:** refactor retries to not use recursion ([8cb8cfa](https://github.com/openai/openai-python/commit/8cb8cfab48a4fed70a756ce50036e7e56e1f9f87))
* **internal:** update models test ([870ad4e](https://github.com/openai/openai-python/commit/870ad4ed3a284d75f44b825503750129284c7906))
* update completion parse signature ([a44016c](https://github.com/openai/openai-python/commit/a44016c64cdefe404e97592808ed3c25411ab27b))

## 1.75.0 (2025-04-16)

Full Changelog: [v1.74.1...v1.75.0](https://github.com/openai/openai-python/compare/v1.74.1...v1.75.0)

### Features

* **api:** add o3 and o4-mini model IDs ([4bacbd5](https://github.com/openai/openai-python/commit/4bacbd5503137e266c127dc643ebae496cb4f158))

## 1.74.1 (2025-04-16)

Full Changelog: [v1.74.0...v1.74.1](https://github.com/openai/openai-python/compare/v1.74.0...v1.74.1)

### Chores

* **internal:** base client updates ([06303b5](https://github.com/openai/openai-python/commit/06303b501f8c17040c495971a4ee79ae340f6f4a))
* **internal:** bump pyright version ([9fd1c77](https://github.com/openai/openai-python/commit/9fd1c778c3231616bf1331cb1daa86fdfca4cb7f))

## 1.74.0 (2025-04-14)

Full Changelog: [v1.73.0...v1.74.0](https://github.com/openai/openai-python/compare/v1.73.0...v1.74.0)

### Features

* **api:** adding gpt-4.1 family of model IDs ([d4dae55](https://github.com/openai/openai-python/commit/d4dae5553ff3a2879b9ab79a6423661b212421f9))


### Bug Fixes

* **chat:** skip azure async filter events ([#2255](https://github.com/openai/openai-python/issues/2255)) ([fd3a38b](https://github.com/openai/openai-python/commit/fd3a38b1ed30af0a9f3302c1cfc6be6b352e65de))


### Chores

* **client:** minor internal fixes ([6071ae5](https://github.com/openai/openai-python/commit/6071ae5e8b4faa465afc8d07370737e66901900a))
* **internal:** update pyright settings ([c8f8beb](https://github.com/openai/openai-python/commit/c8f8bebf852380a224701bc36826291d6387c53d))

## 1.73.0 (2025-04-12)

Full Changelog: [v1.72.0...v1.73.0](https://github.com/openai/openai-python/compare/v1.72.0...v1.73.0)

### Features

* **api:** manual updates ([a3253dd](https://github.com/openai/openai-python/commit/a3253dd798c1eccd9810d4fc593e8c2a568bcf4f))


### Bug Fixes

* **perf:** optimize some hot paths ([f79d39f](https://github.com/openai/openai-python/commit/f79d39fbcaea8f366a9e48c06fb1696bab3e607d))
* **perf:** skip traversing types for NotGiven values ([28d220d](https://github.com/openai/openai-python/commit/28d220de3b4a09d80450d0bcc9b347bbf68f81ec))


### Chores

* **internal:** expand CI branch coverage ([#2295](https://github.com/openai/openai-python/issues/2295)) ([0ae783b](https://github.com/openai/openai-python/commit/0ae783b99122975be521365de0b6d2bce46056c9))
* **internal:** reduce CI branch coverage ([2fb7d42](https://github.com/openai/openai-python/commit/2fb7d425cda679a54aa3262090479fd747363bb4))
* slight wording improvement in README ([#2291](https://github.com/openai/openai-python/issues/2291)) ([e020759](https://github.com/openai/openai-python/commit/e0207598d16a2a9cb3cb3a8e8e97fa9cfdccd5e8))
* workaround build errors ([4e10c96](https://github.com/openai/openai-python/commit/4e10c96a483db28dedc2d8c2908765fb7317e049))

## 1.72.0 (2025-04-08)

Full Changelog: [v1.71.0...v1.72.0](https://github.com/openai/openai-python/compare/v1.71.0...v1.72.0)

### Features

* **api:** Add evalapi to sdk ([#2287](https://github.com/openai/openai-python/issues/2287)) ([35262fc](https://github.com/openai/openai-python/commit/35262fcef6ccb7d1f75c9abdfdc68c3dcf87ef53))


### Chores

* **internal:** fix examples ([#2288](https://github.com/openai/openai-python/issues/2288)) ([39defd6](https://github.com/openai/openai-python/commit/39defd61e81ea0ec6b898be12e9fb7e621c0e532))
* **internal:** skip broken test ([#2289](https://github.com/openai/openai-python/issues/2289)) ([e2c9bce](https://github.com/openai/openai-python/commit/e2c9bce1f59686ee053b495d06ea118b4a89e09e))
* **internal:** slight transform perf improvement ([#2284](https://github.com/openai/openai-python/issues/2284)) ([746174f](https://github.com/openai/openai-python/commit/746174fae7a018ece5dab54fb0b5a15fcdd18f2f))
* **tests:** improve enum examples ([#2286](https://github.com/openai/openai-python/issues/2286)) ([c9dd81c](https://github.com/openai/openai-python/commit/c9dd81ce0277e8b1f5db5e0a39c4c2bcd9004bcc))

## 1.71.0 (2025-04-07)

Full Changelog: [v1.70.0...v1.71.0](https://github.com/openai/openai-python/compare/v1.70.0...v1.71.0)

### Features

* **api:** manual updates ([bf8b4b6](https://github.com/openai/openai-python/commit/bf8b4b69906bfaea622c9c644270e985d92e2df2))
* **api:** manual updates ([3e37aa3](https://github.com/openai/openai-python/commit/3e37aa3e151d9738625a1daf75d6243d6fdbe8f2))
* **api:** manual updates ([dba9b65](https://github.com/openai/openai-python/commit/dba9b656fa5955b6eba8f6910da836a34de8d59d))
* **api:** manual updates ([f0c463b](https://github.com/openai/openai-python/commit/f0c463b47836666d091b5f616871f1b94646d346))


### Chores

* **deps:** allow websockets v15 ([#2281](https://github.com/openai/openai-python/issues/2281)) ([19c619e](https://github.com/openai/openai-python/commit/19c619ea95839129a86c19d5b60133e1ed9f2746))
* **internal:** only run examples workflow in main repo ([#2282](https://github.com/openai/openai-python/issues/2282)) ([c3e0927](https://github.com/openai/openai-python/commit/c3e0927d3fbbb9f753ba12adfa682a4235ba530a))
* **internal:** remove trailing character ([#2277](https://github.com/openai/openai-python/issues/2277)) ([5a21a2d](https://github.com/openai/openai-python/commit/5a21a2d7994e39bb0c86271eeb807983a9ae874a))
* Remove deprecated/unused remote spec feature ([23f76eb](https://github.com/openai/openai-python/commit/23f76eb0b9ddf12bcb04a6ad3f3ec5e956d2863f))

## 1.70.0 (2025-03-31)

Full Changelog: [v1.69.0...v1.70.0](https://github.com/openai/openai-python/compare/v1.69.0...v1.70.0)

### Features

* **api:** add `get /responses/{response_id}/input_items` endpoint ([4c6a35d](https://github.com/openai/openai-python/commit/4c6a35dec65362a6a738c3387dae57bf8cbfcbb2))

## 1.69.0 (2025-03-27)

Full Changelog: [v1.68.2...v1.69.0](https://github.com/openai/openai-python/compare/v1.68.2...v1.69.0)

### Features

* **api:** add `get /chat/completions` endpoint ([e6b8a42](https://github.com/openai/openai-python/commit/e6b8a42fc4286656cc86c2acd83692b170e77b68))


### Bug Fixes

* **audio:** correctly parse transcription stream events ([16a3a19](https://github.com/openai/openai-python/commit/16a3a195ff31f099fbe46043a12d2380c2c01f83))


### Chores

* add hash of OpenAPI spec/config inputs to .stats.yml ([515e1cd](https://github.com/openai/openai-python/commit/515e1cdd4a3109e5b29618df813656e17f22b52a))
* **api:** updates to supported Voice IDs ([#2261](https://github.com/openai/openai-python/issues/2261)) ([64956f9](https://github.com/openai/openai-python/commit/64956f9d9889b04380c7f5eb926509d1efd523e6))
* fix typos ([#2259](https://github.com/openai/openai-python/issues/2259)) ([6160de3](https://github.com/openai/openai-python/commit/6160de3e099f09c2d6ee5eeee4cbcc55b67a8f87))

## 1.68.2 (2025-03-21)

Full Changelog: [v1.68.1...v1.68.2](https://github.com/openai/openai-python/compare/v1.68.1...v1.68.2)

### Refactors

* **package:** rename audio extra to voice_helpers ([2dd6cb8](https://github.com/openai/openai-python/commit/2dd6cb87489fe12c5e45128f44d985c3f49aba1d))

## 1.68.1 (2025-03-21)

Full Changelog: [v1.68.0...v1.68.1](https://github.com/openai/openai-python/compare/v1.68.0...v1.68.1)

### Bug Fixes

* **client:** remove duplicate types ([#2235](https://github.com/openai/openai-python/issues/2235)) ([063f7d0](https://github.com/openai/openai-python/commit/063f7d0684c350ca9d766e2cb150233a22a623c8))
* **helpers/audio:** remove duplicative module ([f253d04](https://github.com/openai/openai-python/commit/f253d0415145f2c4904ea2e7b389d31d94e45a54))
* **package:** make sounddevice and numpy optional dependencies ([8b04453](https://github.com/openai/openai-python/commit/8b04453f0483736c13f0209a9f8f3618bc0e86c9))


### Chores

* **ci:** run workflows on next too ([67f89d4](https://github.com/openai/openai-python/commit/67f89d478aab780d1481c9bf6682c6633e431137))

## 1.68.0 (2025-03-20)

Full Changelog: [v1.67.0...v1.68.0](https://github.com/openai/openai-python/compare/v1.67.0...v1.68.0)

### Features

* add audio helpers ([423655c](https://github.com/openai/openai-python/commit/423655ca9077cfd258f1e52f6eb386fc8307fa5f))
* **api:** new models for TTS, STT, + new audio features for Realtime ([#2232](https://github.com/openai/openai-python/issues/2232)) ([ab5192d](https://github.com/openai/openai-python/commit/ab5192d0a7b417ade622ec94dd48f86beb90692c))

## 1.67.0 (2025-03-19)

Full Changelog: [v1.66.5...v1.67.0](https://github.com/openai/openai-python/compare/v1.66.5...v1.67.0)

### Features

* **api:** o1-pro now available through the API ([#2228](https://github.com/openai/openai-python/issues/2228)) ([40a19d8](https://github.com/openai/openai-python/commit/40a19d8592c1767d6318230fc93e37c360d1bcd1))

## 1.66.5 (2025-03-18)

Full Changelog: [v1.66.4...v1.66.5](https://github.com/openai/openai-python/compare/v1.66.4...v1.66.5)

### Bug Fixes

* **types:** improve responses type names ([#2224](https://github.com/openai/openai-python/issues/2224)) ([5f7beb8](https://github.com/openai/openai-python/commit/5f7beb873af5ccef2551f34ab3ef098e099ce9c6))


### Chores

* **internal:** add back releases workflow ([c71d4c9](https://github.com/openai/openai-python/commit/c71d4c918eab3532b36ea944b0c4069db6ac2d38))
* **internal:** codegen related update ([#2222](https://github.com/openai/openai-python/issues/2222)) ([f570d91](https://github.com/openai/openai-python/commit/f570d914a16cb5092533e32dfd863027d378c0b5))

## 1.66.4 (2025-03-17)

Full Changelog: [v1.66.3...v1.66.4](https://github.com/openai/openai-python/compare/v1.66.3...v1.66.4)

### Bug Fixes

* **ci:** ensure pip is always available ([#2207](https://github.com/openai/openai-python/issues/2207)) ([3f08e56](https://github.com/openai/openai-python/commit/3f08e56a48a04c2b7f03a4ad63f38228e25810e6))
* **ci:** remove publishing patch ([#2208](https://github.com/openai/openai-python/issues/2208)) ([dd2dab7](https://github.com/openai/openai-python/commit/dd2dab7faf2a003da3e6af66780bd250be6e7f3f))
* **types:** handle more discriminated union shapes ([#2206](https://github.com/openai/openai-python/issues/2206)) ([f85a9c6](https://github.com/openai/openai-python/commit/f85a9c633dcb9b64c0eb47d20151894742bbef22))


### Chores

* **internal:** bump rye to 0.44.0 ([#2200](https://github.com/openai/openai-python/issues/2200)) ([2dd3139](https://github.com/openai/openai-python/commit/2dd3139df6e7fe6307f9847e6527073e355e5047))
* **internal:** remove CI condition ([#2203](https://github.com/openai/openai-python/issues/2203)) ([9620fdc](https://github.com/openai/openai-python/commit/9620fdcf4f2d01b6753ecc0abc16e5239c2b41e1))
* **internal:** remove extra empty newlines ([#2195](https://github.com/openai/openai-python/issues/2195)) ([a1016a7](https://github.com/openai/openai-python/commit/a1016a78fe551e0f0e2562a0e81d1cb724d195da))
* **internal:** update release workflows ([e2def44](https://github.com/openai/openai-python/commit/e2def4453323aa1cf8077df447fd55eb4c626393))

## 1.66.3 (2025-03-12)

Full Changelog: [v1.66.2...v1.66.3](https://github.com/openai/openai-python/compare/v1.66.2...v1.66.3)

### Bug Fixes

* update module level client ([#2185](https://github.com/openai/openai-python/issues/2185)) ([456f324](https://github.com/openai/openai-python/commit/456f3240a0c33e71521c6b73c32e8adc1b8cd3bc))

## 1.66.2 (2025-03-11)

Full Changelog: [v1.66.1...v1.66.2](https://github.com/openai/openai-python/compare/v1.66.1...v1.66.2)

### Bug Fixes

* **responses:** correct reasoning output type ([#2181](https://github.com/openai/openai-python/issues/2181)) ([8cb1129](https://github.com/openai/openai-python/commit/8cb11299acc40c80061af275691cd09a2bf30c65))

## 1.66.1 (2025-03-11)

Full Changelog: [v1.66.0...v1.66.1](https://github.com/openai/openai-python/compare/v1.66.0...v1.66.1)

### Bug Fixes

* **responses:** correct computer use enum value ([#2180](https://github.com/openai/openai-python/issues/2180)) ([48f4628](https://github.com/openai/openai-python/commit/48f4628c5fb18ddd7d71e8730184f3ac50c4ffea))


### Chores

* **internal:** temporary commit ([afabec1](https://github.com/openai/openai-python/commit/afabec1b5b18b41ac870970d06e6c2f152ef7bbe))

## 1.66.0 (2025-03-11)

Full Changelog: [v1.65.5...v1.66.0](https://github.com/openai/openai-python/compare/v1.65.5...v1.66.0)

### Features

* **api:** add /v1/responses and built-in tools ([854df97](https://github.com/openai/openai-python/commit/854df97884736244d46060fd3d5a92916826ec8f))


### Chores

* export more types ([#2176](https://github.com/openai/openai-python/issues/2176)) ([a730f0e](https://github.com/openai/openai-python/commit/a730f0efedd228f96a49467f17fb19b6a219246c))

## 1.65.5 (2025-03-09)

Full Changelog: [v1.65.4...v1.65.5](https://github.com/openai/openai-python/compare/v1.65.4...v1.65.5)

### Chores

* move ChatModel type to shared ([#2167](https://github.com/openai/openai-python/issues/2167)) ([104f02a](https://github.com/openai/openai-python/commit/104f02af371076d5d2498e48ae14d2eacc7df8bd))

## 1.65.4 (2025-03-05)

Full Changelog: [v1.65.3...v1.65.4](https://github.com/openai/openai-python/compare/v1.65.3...v1.65.4)

### Bug Fixes

* **api:** add missing file rank enum + more metadata ([#2164](https://github.com/openai/openai-python/issues/2164)) ([0387e48](https://github.com/openai/openai-python/commit/0387e48e0880e496eb74b60eec9ed76a3171f14d))

## 1.65.3 (2025-03-04)

Full Changelog: [v1.65.2...v1.65.3](https://github.com/openai/openai-python/compare/v1.65.2...v1.65.3)

### Chores

* **internal:** remove unused http client options forwarding ([#2158](https://github.com/openai/openai-python/issues/2158)) ([76ec464](https://github.com/openai/openai-python/commit/76ec464cfe3db3fa59a766259d6d6ee5bb889f86))
* **internal:** run example files in CI ([#2160](https://github.com/openai/openai-python/issues/2160)) ([9979345](https://github.com/openai/openai-python/commit/9979345038594440eec2f500c0c7cc5417cc7c08))

## 1.65.2 (2025-03-01)

Full Changelog: [v1.65.1...v1.65.2](https://github.com/openai/openai-python/compare/v1.65.1...v1.65.2)

### Bug Fixes

* **azure:** azure_deployment use with realtime + non-deployment-based APIs ([#2154](https://github.com/openai/openai-python/issues/2154)) ([5846b55](https://github.com/openai/openai-python/commit/5846b552877f3d278689c521f9a26ce31167e1ea))


### Chores

* **docs:** update client docstring ([#2152](https://github.com/openai/openai-python/issues/2152)) ([0518c34](https://github.com/openai/openai-python/commit/0518c341ee0e19941c6b1d9d60e2552e1aa17f26))

## 1.65.1 (2025-02-27)

Full Changelog: [v1.65.0...v1.65.1](https://github.com/openai/openai-python/compare/v1.65.0...v1.65.1)

### Documentation

* update URLs from stainlessapi.com to stainless.com ([#2150](https://github.com/openai/openai-python/issues/2150)) ([dee4298](https://github.com/openai/openai-python/commit/dee42986eff46dd23ba25b3e2a5bb7357aca39d9))

## 1.65.0 (2025-02-27)

Full Changelog: [v1.64.0...v1.65.0](https://github.com/openai/openai-python/compare/v1.64.0...v1.65.0)

### Features

* **api:** add gpt-4.5-preview ([#2149](https://github.com/openai/openai-python/issues/2149)) ([4cee52e](https://github.com/openai/openai-python/commit/4cee52e8d191b0532f28d86446da79b43a58b907))


### Chores

* **internal:** properly set __pydantic_private__ ([#2144](https://github.com/openai/openai-python/issues/2144)) ([2b1bd16](https://github.com/openai/openai-python/commit/2b1bd1604a038ded67367742a0b1c9d92e29dfc8))

## 1.64.0 (2025-02-22)

Full Changelog: [v1.63.2...v1.64.0](https://github.com/openai/openai-python/compare/v1.63.2...v1.64.0)

### Features

* **client:** allow passing `NotGiven` for body ([#2135](https://github.com/openai/openai-python/issues/2135)) ([4451f56](https://github.com/openai/openai-python/commit/4451f5677f9eaad9b8fee74f71c2e5fe6785c420))


### Bug Fixes

* **client:** mark some request bodies as optional ([4451f56](https://github.com/openai/openai-python/commit/4451f5677f9eaad9b8fee74f71c2e5fe6785c420))


### Chores

* **internal:** fix devcontainers setup ([#2137](https://github.com/openai/openai-python/issues/2137)) ([4d88402](https://github.com/openai/openai-python/commit/4d884020cbeb1ca6093dd5317e3e5812551f7a46))

## 1.63.2 (2025-02-17)

Full Changelog: [v1.63.1...v1.63.2](https://github.com/openai/openai-python/compare/v1.63.1...v1.63.2)

### Chores

* **internal:** revert temporary commit ([#2121](https://github.com/openai/openai-python/issues/2121)) ([72458ab](https://github.com/openai/openai-python/commit/72458abeed3dd95db8aabed94a33bb12a916f8b7))

## 1.63.1 (2025-02-17)

Full Changelog: [v1.63.0...v1.63.1](https://github.com/openai/openai-python/compare/v1.63.0...v1.63.1)

### Chores

* **internal:** temporary commit ([#2121](https://github.com/openai/openai-python/issues/2121)) ([f7f8361](https://github.com/openai/openai-python/commit/f7f83614c8da84c6725d60936f08f9f1a65f0a9e))

## 1.63.0 (2025-02-13)

Full Changelog: [v1.62.0...v1.63.0](https://github.com/openai/openai-python/compare/v1.62.0...v1.63.0)

### Features

* **api:** add support for storing chat completions ([#2117](https://github.com/openai/openai-python/issues/2117)) ([2357a8f](https://github.com/openai/openai-python/commit/2357a8f97246a3fe17c6ac1fb0d7a67d6f1ffc1d))

## 1.62.0 (2025-02-12)

Full Changelog: [v1.61.1...v1.62.0](https://github.com/openai/openai-python/compare/v1.61.1...v1.62.0)

### Features

* **client:** send `X-Stainless-Read-Timeout` header ([#2094](https://github.com/openai/openai-python/issues/2094)) ([0288213](https://github.com/openai/openai-python/commit/0288213fbfa935c9bf9d56416619ea929ae1cf63))
* **embeddings:** use stdlib array type for improved performance ([#2060](https://github.com/openai/openai-python/issues/2060)) ([9a95db9](https://github.com/openai/openai-python/commit/9a95db9154ac98678970e7f1652a7cacfd2f7fdb))
* **pagination:** avoid fetching when has_more: false ([#2098](https://github.com/openai/openai-python/issues/2098)) ([1882483](https://github.com/openai/openai-python/commit/18824832d3a676ae49206cd2b5e09d4796fdf033))


### Bug Fixes

* **api:** add missing reasoning effort + model enums ([#2096](https://github.com/openai/openai-python/issues/2096)) ([e0ca9f0](https://github.com/openai/openai-python/commit/e0ca9f0f6fae40230f8cab97573914ed632920b6))
* **parsing:** don't default to an empty array ([#2106](https://github.com/openai/openai-python/issues/2106)) ([8e748bb](https://github.com/openai/openai-python/commit/8e748bb08d9c0d1f7e8a1af31452e25eb7154f55))


### Chores

* **internal:** fix type traversing dictionary params ([#2097](https://github.com/openai/openai-python/issues/2097)) ([4e5b368](https://github.com/openai/openai-python/commit/4e5b368bf576f38d0f125778edde74ed6d101d7d))
* **internal:** minor type handling changes ([#2099](https://github.com/openai/openai-python/issues/2099)) ([a2c6da0](https://github.com/openai/openai-python/commit/a2c6da0fbc610ee80a2e044a0b20fc1cc2376962))

## 1.61.1 (2025-02-05)

Full Changelog: [v1.61.0...v1.61.1](https://github.com/openai/openai-python/compare/v1.61.0...v1.61.1)

### Bug Fixes

* **api/types:** correct audio duration & role types ([#2091](https://github.com/openai/openai-python/issues/2091)) ([afcea48](https://github.com/openai/openai-python/commit/afcea4891ff85de165ccc2b5497ccf9a90520e9e))
* **cli/chat:** only send params when set ([#2077](https://github.com/openai/openai-python/issues/2077)) ([688b223](https://github.com/openai/openai-python/commit/688b223d9a733d241d50e5d7df62f346592c537c))


### Chores

* **internal:** bummp ruff dependency ([#2080](https://github.com/openai/openai-python/issues/2080)) ([b7a80b1](https://github.com/openai/openai-python/commit/b7a80b1994ab86e81485b88531e4aea63b3da594))
* **internal:** change default timeout to an int ([#2079](https://github.com/openai/openai-python/issues/2079)) ([d3df1c6](https://github.com/openai/openai-python/commit/d3df1c6ca090598701e38fd376a9796aadba88f1))

## 1.61.0 (2025-01-31)

Full Changelog: [v1.60.2...v1.61.0](https://github.com/openai/openai-python/compare/v1.60.2...v1.61.0)

### Features

* **api:** add o3-mini ([#2067](https://github.com/openai/openai-python/issues/2067)) ([12b87a4](https://github.com/openai/openai-python/commit/12b87a4a1e6cb071a6b063d089585dec56a5d534))


### Bug Fixes

* **types:** correct metadata type + other fixes ([12b87a4](https://github.com/openai/openai-python/commit/12b87a4a1e6cb071a6b063d089585dec56a5d534))


### Chores

* **helpers:** section links ([ef8d3cc](https://github.com/openai/openai-python/commit/ef8d3cce40022d3482d341455be604e5f1afbd70))
* **types:** fix Metadata types ([82d3156](https://github.com/openai/openai-python/commit/82d3156e74ed2f95edd10cd7ebea53d2b5562794))
* update api.md ([#2063](https://github.com/openai/openai-python/issues/2063)) ([21964f0](https://github.com/openai/openai-python/commit/21964f00fb104011c4c357544114702052b74548))


### Documentation

* **readme:** current section links ([#2055](https://github.com/openai/openai-python/issues/2055)) ([ef8d3cc](https://github.com/openai/openai-python/commit/ef8d3cce40022d3482d341455be604e5f1afbd70))

## 1.60.2 (2025-01-27)

Full Changelog: [v1.60.1...v1.60.2](https://github.com/openai/openai-python/compare/v1.60.1...v1.60.2)

### Bug Fixes

* **parsing:** don't validate input tools in the asynchronous `.parse()` method ([6fcfe73](https://github.com/openai/openai-python/commit/6fcfe73cd335853c7dd2cd3151a0d5d1785cfc9c))

## 1.60.1 (2025-01-24)

Full Changelog: [v1.60.0...v1.60.1](https://github.com/openai/openai-python/compare/v1.60.0...v1.60.1)

### Chores

* **internal:** minor formatting changes ([#2050](https://github.com/openai/openai-python/issues/2050)) ([9c44192](https://github.com/openai/openai-python/commit/9c44192be5776d9252d36dc027a33c60b33d81b2))


### Documentation

* **examples/azure:** add async snippet ([#1787](https://github.com/openai/openai-python/issues/1787)) ([f60eda1](https://github.com/openai/openai-python/commit/f60eda1c1e8caf0ec2274b18b3fb2252304196db))

## 1.60.0 (2025-01-22)

Full Changelog: [v1.59.9...v1.60.0](https://github.com/openai/openai-python/compare/v1.59.9...v1.60.0)

### Features

* **api:** update enum values, comments, and examples ([#2045](https://github.com/openai/openai-python/issues/2045)) ([e8205fd](https://github.com/openai/openai-python/commit/e8205fd58f0d677f476c577a8d9afb90f5710506))


### Chores

* **internal:** minor style changes ([#2043](https://github.com/openai/openai-python/issues/2043)) ([89a9dd8](https://github.com/openai/openai-python/commit/89a9dd821eaf5300ad11b0270b61fdfa4fd6e9b6))


### Documentation

* **readme:** mention failed requests in request IDs ([5f7c30b](https://github.com/openai/openai-python/commit/5f7c30bc006ffb666c324011a68aae357cb33e35))

## 1.59.9 (2025-01-20)

Full Changelog: [v1.59.8...v1.59.9](https://github.com/openai/openai-python/compare/v1.59.8...v1.59.9)

### Bug Fixes

* **tests:** make test_get_platform less flaky ([#2040](https://github.com/openai/openai-python/issues/2040)) ([72ea05c](https://github.com/openai/openai-python/commit/72ea05cf18caaa7a5e6fe7e2251ab93fa0ba3140))


### Chores

* **internal:** avoid pytest-asyncio deprecation warning ([#2041](https://github.com/openai/openai-python/issues/2041)) ([b901046](https://github.com/openai/openai-python/commit/b901046ddda9c79b7f019e2263c02d126a3b2ee2))
* **internal:** update websockets dep ([#2036](https://github.com/openai/openai-python/issues/2036)) ([642cd11](https://github.com/openai/openai-python/commit/642cd119482c6fbca925ba702ad2579f9dc47bf9))


### Documentation

* fix typo ([#2031](https://github.com/openai/openai-python/issues/2031)) ([02fcf15](https://github.com/openai/openai-python/commit/02fcf15611953089826a74725cb96201d94658bb))
* **raw responses:** fix duplicate `the` ([#2039](https://github.com/openai/openai-python/issues/2039)) ([9b8eab9](https://github.com/openai/openai-python/commit/9b8eab99fdc6a581a1f5cc421c6f74b0e2b30415))

## 1.59.8 (2025-01-17)

Full Changelog: [v1.59.7...v1.59.8](https://github.com/openai/openai-python/compare/v1.59.7...v1.59.8)

### Bug Fixes

* streaming ([c16f58e](https://github.com/openai/openai-python/commit/c16f58ead0bc85055b164182689ba74b7e939dfa))
* **structured outputs:** avoid parsing empty empty content ([#2023](https://github.com/openai/openai-python/issues/2023)) ([6d3513c](https://github.com/openai/openai-python/commit/6d3513c86f6e5800f8f73a45e089b7a205327121))
* **structured outputs:** correct schema coercion for inline ref expansion ([#2025](https://github.com/openai/openai-python/issues/2025)) ([2f4f0b3](https://github.com/openai/openai-python/commit/2f4f0b374207f162060c328b71ec995049dc42e8))
* **types:** correct type for vector store chunking strategy ([#2017](https://github.com/openai/openai-python/issues/2017)) ([e389279](https://github.com/openai/openai-python/commit/e38927950a5cdad99065853fe7b72aad6bb322e9))


### Chores

* **examples:** update realtime model ([f26746c](https://github.com/openai/openai-python/commit/f26746cbcd893d66cf8a3fd68a7c3779dc8c833c)), closes [#2020](https://github.com/openai/openai-python/issues/2020)
* **internal:** bump pyright dependency ([#2021](https://github.com/openai/openai-python/issues/2021)) ([0a9a0f5](https://github.com/openai/openai-python/commit/0a9a0f5d8b9d5457643798287f893305006dd518))
* **internal:** streaming refactors ([#2012](https://github.com/openai/openai-python/issues/2012)) ([d76a748](https://github.com/openai/openai-python/commit/d76a748f606743407f94dfc26758095560e2082a))
* **internal:** update deps ([#2015](https://github.com/openai/openai-python/issues/2015)) ([514e0e4](https://github.com/openai/openai-python/commit/514e0e415f87ab4510262d29ed6125384e017b84))


### Documentation

* **examples/azure:** example script with realtime API ([#1967](https://github.com/openai/openai-python/issues/1967)) ([84f2f9c](https://github.com/openai/openai-python/commit/84f2f9c0439229a7db7136fe78419292d34d1f81))

## 1.59.7 (2025-01-13)

Full Changelog: [v1.59.6...v1.59.7](https://github.com/openai/openai-python/compare/v1.59.6...v1.59.7)

### Chores

* export HttpxBinaryResponseContent class ([7191b71](https://github.com/openai/openai-python/commit/7191b71f3dcbbfcb2f2bec855c3bba93c956384e))

## 1.59.6 (2025-01-09)

Full Changelog: [v1.59.5...v1.59.6](https://github.com/openai/openai-python/compare/v1.59.5...v1.59.6)

### Bug Fixes

* correctly handle deserialising `cls` fields ([#2002](https://github.com/openai/openai-python/issues/2002)) ([089c820](https://github.com/openai/openai-python/commit/089c820c8a5d20e9db6a171f0a4f11b481fe8465))


### Chores

* **internal:** spec update ([#2000](https://github.com/openai/openai-python/issues/2000)) ([36548f8](https://github.com/openai/openai-python/commit/36548f871763fdd7b5ce44903d186bc916331549))

## 1.59.5 (2025-01-08)

Full Changelog: [v1.59.4...v1.59.5](https://github.com/openai/openai-python/compare/v1.59.4...v1.59.5)

### Bug Fixes

* **client:** only call .close() when needed ([#1992](https://github.com/openai/openai-python/issues/1992)) ([bdfd699](https://github.com/openai/openai-python/commit/bdfd699b99522e83f7610b5f98e36fe43ddf8338))


### Documentation

* fix typos ([#1995](https://github.com/openai/openai-python/issues/1995)) ([be694a0](https://github.com/openai/openai-python/commit/be694a097d6cf2668f08ecf94c882773b2ee1f84))
* fix typos ([#1996](https://github.com/openai/openai-python/issues/1996)) ([714aed9](https://github.com/openai/openai-python/commit/714aed9d7eb74a19f6e502fb6d4fe83399f82851))
* more typo fixes ([#1998](https://github.com/openai/openai-python/issues/1998)) ([7bd92f0](https://github.com/openai/openai-python/commit/7bd92f06a75f11f6afc2d1223d2426e186cc74cb))
* **readme:** moved period to inside parentheses ([#1980](https://github.com/openai/openai-python/issues/1980)) ([e7fae94](https://github.com/openai/openai-python/commit/e7fae948f2ba8db23461e4374308417570196847))

## 1.59.4 (2025-01-07)

Full Changelog: [v1.59.3...v1.59.4](https://github.com/openai/openai-python/compare/v1.59.3...v1.59.4)

### Chores

* add missing isclass check ([#1988](https://github.com/openai/openai-python/issues/1988)) ([61d9072](https://github.com/openai/openai-python/commit/61d9072fbace58d64910ec7378c3686ac555972e))
* add missing isclass check for structured outputs ([bcbf013](https://github.com/openai/openai-python/commit/bcbf013e8d825b8b5f88172313dfb6e0313ca34c))
* **internal:** bump httpx dependency ([#1990](https://github.com/openai/openai-python/issues/1990)) ([288c2c3](https://github.com/openai/openai-python/commit/288c2c30dc405cbaa89924f9243442300e95e100))


### Documentation

* **realtime:** fix event reference link ([9b6885d](https://github.com/openai/openai-python/commit/9b6885d50f8d65ba5009642046727d291e0f14fa))

## 1.59.3 (2025-01-03)

Full Changelog: [v1.59.2...v1.59.3](https://github.com/openai/openai-python/compare/v1.59.2...v1.59.3)

### Chores

* **api:** bump spec version ([#1985](https://github.com/openai/openai-python/issues/1985)) ([c6f1b35](https://github.com/openai/openai-python/commit/c6f1b357fcf669065f4ed6819d47a528b0787128))

## 1.59.2 (2025-01-03)

Full Changelog: [v1.59.1...v1.59.2](https://github.com/openai/openai-python/compare/v1.59.1...v1.59.2)

### Chores

* **ci:** fix publish workflow ([0be1f5d](https://github.com/openai/openai-python/commit/0be1f5de0daf807cece564abf061c8bb188bb9aa))
* **internal:** empty commit ([fe8dc2e](https://github.com/openai/openai-python/commit/fe8dc2e97fc430ea2433ed28cfaa79425af223ec))

## 1.59.1 (2025-01-02)

Full Changelog: [v1.59.0...v1.59.1](https://github.com/openai/openai-python/compare/v1.59.0...v1.59.1)

### Chores

* bump license year ([#1981](https://github.com/openai/openai-python/issues/1981)) ([f29011a](https://github.com/openai/openai-python/commit/f29011a6426d3fa4844ecd723ee20561ee60c665))

## 1.59.0 (2024-12-21)

Full Changelog: [v1.58.1...v1.59.0](https://github.com/openai/openai-python/compare/v1.58.1...v1.59.0)

### Features

* **azure:** support for the Realtime API ([#1963](https://github.com/openai/openai-python/issues/1963)) ([9fda141](https://github.com/openai/openai-python/commit/9fda14172abdb66fe240aa7b4dc7cfae4faf1d73))


### Chores

* **realtime:** update docstrings ([#1964](https://github.com/openai/openai-python/issues/1964)) ([3dee863](https://github.com/openai/openai-python/commit/3dee863554d28272103e90a6a199ac196e92ff05))

## 1.58.1 (2024-12-17)

Full Changelog: [v1.58.0...v1.58.1](https://github.com/openai/openai-python/compare/v1.58.0...v1.58.1)

### Documentation

* **readme:** fix example script link ([23ba877](https://github.com/openai/openai-python/commit/23ba8778fd55e0f54f36685e9c5950b452d8e10c))

## 1.58.0 (2024-12-17)

Full Changelog: [v1.57.4...v1.58.0](https://github.com/openai/openai-python/compare/v1.57.4...v1.58.0)

### Features

* add Realtime API support ([#1958](https://github.com/openai/openai-python/issues/1958)) ([97d73cf](https://github.com/openai/openai-python/commit/97d73cf89935ca6098bb889a92f0ec2cdff16989))
* **api:** new o1 and GPT-4o models + preference fine-tuning ([#1956](https://github.com/openai/openai-python/issues/1956)) ([ec22ffb](https://github.com/openai/openai-python/commit/ec22ffb129c524525caa33b088405d27c271e631))


### Bug Fixes

* add reasoning_effort to all methods ([8829c32](https://github.com/openai/openai-python/commit/8829c3202dbe790ca3646476c802ec55ed47d864))
* **assistants:** correctly send `include` query param ([9a4c69c](https://github.com/openai/openai-python/commit/9a4c69c383bc6719b6521a485f2c7e62a9c036a9))
* **cli/migrate:** change grit binaries prefix ([#1951](https://github.com/openai/openai-python/issues/1951)) ([1c396c9](https://github.com/openai/openai-python/commit/1c396c95b040fb3d1a2523b09eaad4ff62d96846))


### Chores

* **internal:** fix some typos ([#1955](https://github.com/openai/openai-python/issues/1955)) ([628dead](https://github.com/openai/openai-python/commit/628dead660c00435bf46e09081c7b90b7bbe4a8a))


### Documentation

* add examples + guidance on Realtime API support ([1cb00f8](https://github.com/openai/openai-python/commit/1cb00f8fed78052aacbb9e0fac997b6ba0d44d2a))
* **readme:** example snippet for client context manager ([#1953](https://github.com/openai/openai-python/issues/1953)) ([ad80255](https://github.com/openai/openai-python/commit/ad802551d8aaf4e6eff711118676ec4e64392638))

## 1.57.4 (2024-12-13)

Full Changelog: [v1.57.3...v1.57.4](https://github.com/openai/openai-python/compare/v1.57.3...v1.57.4)

### Chores

* **internal:** remove some duplicated imports ([#1946](https://github.com/openai/openai-python/issues/1946)) ([f94fddd](https://github.com/openai/openai-python/commit/f94fddd377015764b3c82919fdf956f619447b77))
* **internal:** updated imports ([#1948](https://github.com/openai/openai-python/issues/1948)) ([13971fc](https://github.com/openai/openai-python/commit/13971fc450106746c0ae02ab931e68b770ee105e))

## 1.57.3 (2024-12-12)

Full Changelog: [v1.57.2...v1.57.3](https://github.com/openai/openai-python/compare/v1.57.2...v1.57.3)

### Chores

* **internal:** add support for TypeAliasType ([#1942](https://github.com/openai/openai-python/issues/1942)) ([d3442ff](https://github.com/openai/openai-python/commit/d3442ff28f2394200e14122f683d1f94686e8231))
* **internal:** bump pyright ([#1939](https://github.com/openai/openai-python/issues/1939)) ([190d1a8](https://github.com/openai/openai-python/commit/190d1a805dee7c37fb8f9dcb93b1715caa06cf95))

## 1.57.2 (2024-12-10)

Full Changelog: [v1.57.1...v1.57.2](https://github.com/openai/openai-python/compare/v1.57.1...v1.57.2)

### Bug Fixes

* **azure:** handle trailing slash in `azure_endpoint` ([#1935](https://github.com/openai/openai-python/issues/1935)) ([69b73c5](https://github.com/openai/openai-python/commit/69b73c553b1982277c2f1b9d110ed951ddca689e))


### Documentation

* **readme:** fix http client proxies example ([#1932](https://github.com/openai/openai-python/issues/1932)) ([7a83e0f](https://github.com/openai/openai-python/commit/7a83e0fe4cc29e484ae417448b002c997745e4a3))

## 1.57.1 (2024-12-09)

Full Changelog: [v1.57.0...v1.57.1](https://github.com/openai/openai-python/compare/v1.57.0...v1.57.1)

### Chores

* **internal:** bump pydantic dependency ([#1929](https://github.com/openai/openai-python/issues/1929)) ([5227c95](https://github.com/openai/openai-python/commit/5227c95eff9c7b1395e6d8f14b94652a91ed2ee2))

## 1.57.0 (2024-12-05)

Full Changelog: [v1.56.2...v1.57.0](https://github.com/openai/openai-python/compare/v1.56.2...v1.57.0)

### Features

* **api:** updates ([#1924](https://github.com/openai/openai-python/issues/1924)) ([82ba614](https://github.com/openai/openai-python/commit/82ba6144682b0a6b3a22d4f764231c0c6afdcf6e))


### Chores

* bump openapi url ([#1922](https://github.com/openai/openai-python/issues/1922)) ([a472a8f](https://github.com/openai/openai-python/commit/a472a8fd0ba36b6897dcd02b6005fcf23f98f056))

## 1.56.2 (2024-12-04)

Full Changelog: [v1.56.1...v1.56.2](https://github.com/openai/openai-python/compare/v1.56.1...v1.56.2)

### Chores

* make the `Omit` type public ([#1919](https://github.com/openai/openai-python/issues/1919)) ([4fb8a1c](https://github.com/openai/openai-python/commit/4fb8a1cf1f8df37ce8c027bbaaac85a648bae02a))

## 1.56.1 (2024-12-03)

Full Changelog: [v1.56.0...v1.56.1](https://github.com/openai/openai-python/compare/v1.56.0...v1.56.1)

### Bug Fixes

* **cli:** remove usage of httpx proxies ([0e9fc3d](https://github.com/openai/openai-python/commit/0e9fc3dfbc7dec5b8c8f84dea9d87aad9f3d9cf6))


### Chores

* **internal:** bump pyright ([#1917](https://github.com/openai/openai-python/issues/1917)) ([0e87346](https://github.com/openai/openai-python/commit/0e8734637666ab22bc27fe4ec2cf7c39fddb5d08))

## 1.56.0 (2024-12-02)

Full Changelog: [v1.55.3...v1.56.0](https://github.com/openai/openai-python/compare/v1.55.3...v1.56.0)

### Features

* **client:** make ChatCompletionStreamState public ([#1898](https://github.com/openai/openai-python/issues/1898)) ([dc7f6cb](https://github.com/openai/openai-python/commit/dc7f6cb2618686ff04bfdca228913cda3d320884))

## 1.55.3 (2024-11-28)

Full Changelog: [v1.55.2...v1.55.3](https://github.com/openai/openai-python/compare/v1.55.2...v1.55.3)

### Bug Fixes

* **client:** compat with new httpx 0.28.0 release ([#1904](https://github.com/openai/openai-python/issues/1904)) ([72b6c63](https://github.com/openai/openai-python/commit/72b6c636c526885ef873580a07eff1c18e76bc10))

## 1.55.2 (2024-11-27)

Full Changelog: [v1.55.1...v1.55.2](https://github.com/openai/openai-python/compare/v1.55.1...v1.55.2)

### Chores

* **internal:** exclude mypy from running on tests ([#1899](https://github.com/openai/openai-python/issues/1899)) ([e2496f1](https://github.com/openai/openai-python/commit/e2496f1d274126bdaa46a8256b3dd384b4ae244b))


### Documentation

* **assistants:** correct on_text_delta example ([#1896](https://github.com/openai/openai-python/issues/1896)) ([460b663](https://github.com/openai/openai-python/commit/460b663567ed1031467a8d69eb13fd3b3da38827))

## 1.55.1 (2024-11-25)

Full Changelog: [v1.55.0...v1.55.1](https://github.com/openai/openai-python/compare/v1.55.0...v1.55.1)

### Bug Fixes

* **pydantic-v1:** avoid runtime error for assistants streaming ([#1885](https://github.com/openai/openai-python/issues/1885)) ([197c94b](https://github.com/openai/openai-python/commit/197c94b9e2620da8902aeed6959d2f871bb70461))


### Chores

* remove now unused `cached-property` dep ([#1867](https://github.com/openai/openai-python/issues/1867)) ([df5fac1](https://github.com/openai/openai-python/commit/df5fac1e557f79ed8d0935c48ca7f3f0bf77fa98))
* remove now unused `cached-property` dep ([#1891](https://github.com/openai/openai-python/issues/1891)) ([feebaae](https://github.com/openai/openai-python/commit/feebaae85d76960cb8f1c58dd9b5180136c47962))


### Documentation

* add info log level to readme ([#1887](https://github.com/openai/openai-python/issues/1887)) ([358255d](https://github.com/openai/openai-python/commit/358255d15ed220f8c80a3c0861b98e61e909a7ae))

## 1.55.0 (2024-11-20)

Full Changelog: [v1.54.5...v1.55.0](https://github.com/openai/openai-python/compare/v1.54.5...v1.55.0)

### Features

* **api:** add gpt-4o-2024-11-20 model ([#1877](https://github.com/openai/openai-python/issues/1877)) ([ff64c2a](https://github.com/openai/openai-python/commit/ff64c2a0733854ed8cc1d7dd959a8287b2ec8120))

## 1.54.5 (2024-11-19)

Full Changelog: [v1.54.4...v1.54.5](https://github.com/openai/openai-python/compare/v1.54.4...v1.54.5)

### Bug Fixes

* **asyncify:** avoid hanging process under certain conditions ([#1853](https://github.com/openai/openai-python/issues/1853)) ([3d23437](https://github.com/openai/openai-python/commit/3d234377e7c9cd19db5186688612eb18e68cec8f))


### Chores

* **internal:** minor test changes ([#1874](https://github.com/openai/openai-python/issues/1874)) ([189339d](https://github.com/openai/openai-python/commit/189339d2a09d23ea1883286972f366e19b397f91))
* **internal:** spec update ([#1873](https://github.com/openai/openai-python/issues/1873)) ([24c81f7](https://github.com/openai/openai-python/commit/24c81f729ae09ba3cec5542e5cc955c8b05b0f88))
* **tests:** limit array example length ([#1870](https://github.com/openai/openai-python/issues/1870)) ([1e550df](https://github.com/openai/openai-python/commit/1e550df708fc3b5d903b7adfa2180058a216b676))

## 1.54.4 (2024-11-12)

Full Changelog: [v1.54.3...v1.54.4](https://github.com/openai/openai-python/compare/v1.54.3...v1.54.4)

### Bug Fixes

* don't use dicts as iterables in transform ([#1865](https://github.com/openai/openai-python/issues/1865)) ([76a51b1](https://github.com/openai/openai-python/commit/76a51b11efae50659a562197b1e18c6343964b56))


### Documentation

* bump models in example snippets to gpt-4o ([#1861](https://github.com/openai/openai-python/issues/1861)) ([adafe08](https://github.com/openai/openai-python/commit/adafe0859178d406fa93b38f3547f3d262651331))
* move comments in example snippets ([#1860](https://github.com/openai/openai-python/issues/1860)) ([362cf74](https://github.com/openai/openai-python/commit/362cf74d6c34506f98f6c4fb2304357be21f7691))
* **readme:** add missing asyncio import ([#1858](https://github.com/openai/openai-python/issues/1858)) ([dec9d0c](https://github.com/openai/openai-python/commit/dec9d0c97b702b6bcf9c71f5bdd6172bb5718354))

## 1.54.3 (2024-11-06)

Full Changelog: [v1.54.2...v1.54.3](https://github.com/openai/openai-python/compare/v1.54.2...v1.54.3)

### Bug Fixes

* **logs:** redact sensitive headers ([#1850](https://github.com/openai/openai-python/issues/1850)) ([466608f](https://github.com/openai/openai-python/commit/466608fa56b7a9939c08a4c78be2f6fe4a05111b))

## 1.54.2 (2024-11-06)

Full Changelog: [v1.54.1...v1.54.2](https://github.com/openai/openai-python/compare/v1.54.1...v1.54.2)

### Chores

* **tests:** adjust retry timeout values ([#1851](https://github.com/openai/openai-python/issues/1851)) ([cc8009c](https://github.com/openai/openai-python/commit/cc8009c9de56fe80f2689f69e7b891ff4ed297a3))

## 1.54.1 (2024-11-05)

Full Changelog: [v1.54.0...v1.54.1](https://github.com/openai/openai-python/compare/v1.54.0...v1.54.1)

### Bug Fixes

* add new prediction param to all methods ([6aa424d](https://github.com/openai/openai-python/commit/6aa424d076098312801febd938bd4b5e8baf4851))

## 1.54.0 (2024-11-04)

Full Changelog: [v1.53.1...v1.54.0](https://github.com/openai/openai-python/compare/v1.53.1...v1.54.0)

### Features

* **api:** add support for predicted outputs ([#1847](https://github.com/openai/openai-python/issues/1847)) ([42a4103](https://github.com/openai/openai-python/commit/42a410379a1b5f72424cc2e96dc6ddff22fd00be))
* **project:** drop support for Python 3.7 ([#1845](https://github.com/openai/openai-python/issues/1845)) ([0ed5b1a](https://github.com/openai/openai-python/commit/0ed5b1a9302ccf2f40c3c751cd777740a4749cda))

## 1.53.1 (2024-11-04)

Full Changelog: [v1.53.0...v1.53.1](https://github.com/openai/openai-python/compare/v1.53.0...v1.53.1)

### Bug Fixes

* don't use dicts as iterables in transform ([#1842](https://github.com/openai/openai-python/issues/1842)) ([258f265](https://github.com/openai/openai-python/commit/258f26535744ab3b2f0746991fd29eae72ebd667))
* support json safe serialization for basemodel subclasses ([#1844](https://github.com/openai/openai-python/issues/1844)) ([2b80c90](https://github.com/openai/openai-python/commit/2b80c90c21d3b2468dfa3bf40c08c5b0e0eebffa))


### Chores

* **internal:** bump mypy ([#1839](https://github.com/openai/openai-python/issues/1839)) ([d92f959](https://github.com/openai/openai-python/commit/d92f959aa6f49be56574b4d1d1ac5ac48689dd46))

## 1.53.0 (2024-10-30)

Full Changelog: [v1.52.2...v1.53.0](https://github.com/openai/openai-python/compare/v1.52.2...v1.53.0)

### Features

* **api:** add new, expressive voices for Realtime and Audio in Chat Completions ([7cf0a49](https://github.com/openai/openai-python/commit/7cf0a4958e4c985bef4d18bb919fa3948f389a82))


### Chores

* **internal:** bump pytest to v8 & pydantic ([#1829](https://github.com/openai/openai-python/issues/1829)) ([0e67a8a](https://github.com/openai/openai-python/commit/0e67a8af5daf9da029d2bd4bdf341cc8a494254a))

## 1.52.2 (2024-10-23)

Full Changelog: [v1.52.1...v1.52.2](https://github.com/openai/openai-python/compare/v1.52.1...v1.52.2)

### Chores

* **internal:** update spec version ([#1816](https://github.com/openai/openai-python/issues/1816)) ([c23282a](https://github.com/openai/openai-python/commit/c23282a328c48af90a88673ff5f6cc7a866f8758))

## 1.52.1 (2024-10-22)

Full Changelog: [v1.52.0...v1.52.1](https://github.com/openai/openai-python/compare/v1.52.0...v1.52.1)

### Bug Fixes

* **client/async:** correctly retry in all cases ([#1803](https://github.com/openai/openai-python/issues/1803)) ([9fe3f3f](https://github.com/openai/openai-python/commit/9fe3f3f925e06769b7ef6abbf1314a5e82749b4a))


### Chores

* **internal:** bump ruff dependency ([#1801](https://github.com/openai/openai-python/issues/1801)) ([859c672](https://github.com/openai/openai-python/commit/859c6725865f1b3285698f68693f9491d511f7ea))
* **internal:** remove unused black config ([#1807](https://github.com/openai/openai-python/issues/1807)) ([112dab0](https://github.com/openai/openai-python/commit/112dab0290342654265db612c37d327d652251bb))
* **internal:** update spec version ([#1810](https://github.com/openai/openai-python/issues/1810)) ([aa25b7b](https://github.com/openai/openai-python/commit/aa25b7b88823836b418a63da59491f5f3842773c))
* **internal:** update test syntax ([#1798](https://github.com/openai/openai-python/issues/1798)) ([d3098dd](https://github.com/openai/openai-python/commit/d3098dd0b9fbe627c21a8ad39c119d125b7cdb54))
* **tests:** add more retry tests ([#1806](https://github.com/openai/openai-python/issues/1806)) ([5525a1b](https://github.com/openai/openai-python/commit/5525a1ba536058ecc13411e1f98e88f7ec4bf8b9))

## 1.52.0 (2024-10-17)

Full Changelog: [v1.51.2...v1.52.0](https://github.com/openai/openai-python/compare/v1.51.2...v1.52.0)

### Features

* **api:** add gpt-4o-audio-preview model for chat completions ([#1796](https://github.com/openai/openai-python/issues/1796)) ([fbf1e0c](https://github.com/openai/openai-python/commit/fbf1e0c25c4d163f06b61a43d1a94ce001033a7b))

## 1.51.2 (2024-10-08)

Full Changelog: [v1.51.1...v1.51.2](https://github.com/openai/openai-python/compare/v1.51.1...v1.51.2)

### Chores

* add repr to PageInfo class ([#1780](https://github.com/openai/openai-python/issues/1780)) ([63118ee](https://github.com/openai/openai-python/commit/63118ee3c2481d217682e8a31337bdcc16893127))

## 1.51.1 (2024-10-07)

Full Changelog: [v1.51.0...v1.51.1](https://github.com/openai/openai-python/compare/v1.51.0...v1.51.1)

### Bug Fixes

* **client:** avoid OverflowError with very large retry counts ([#1779](https://github.com/openai/openai-python/issues/1779)) ([fb1dacf](https://github.com/openai/openai-python/commit/fb1dacfa4d9447d123c38ab3d3d433d900d32ec5))


### Chores

* **internal:** add support for parsing bool response content ([#1774](https://github.com/openai/openai-python/issues/1774)) ([aa2e25f](https://github.com/openai/openai-python/commit/aa2e25f9a4a632357051397ea34d269eafba026d))


### Documentation

* fix typo in fenced code block language ([#1769](https://github.com/openai/openai-python/issues/1769)) ([57bbc15](https://github.com/openai/openai-python/commit/57bbc155210cc439a36f4e5cbd082e94c3349d78))
* improve and reference contributing documentation ([#1767](https://github.com/openai/openai-python/issues/1767)) ([a985a8b](https://github.com/openai/openai-python/commit/a985a8b8ab8d0b364bd3c26b6423a7c49ae7b1ce))

## 1.51.0 (2024-10-01)

Full Changelog: [v1.50.2...v1.51.0](https://github.com/openai/openai-python/compare/v1.50.2...v1.51.0)

### Features

* **api:** support storing chat completions, enabling evals and model distillation in the dashboard ([2840c6d](https://github.com/openai/openai-python/commit/2840c6df94afb44cfd80efabe0405898331ee267))


### Chores

* **docs:** fix maxium typo ([#1762](https://github.com/openai/openai-python/issues/1762)) ([de94553](https://github.com/openai/openai-python/commit/de94553f93d71fc6c8187c8d3fbe924a71cc46dd))
* **internal:** remove ds store ([47a3968](https://github.com/openai/openai-python/commit/47a3968f9b318eb02d5602f5b10e7d9e69c3ae84))


### Documentation

* **helpers:** fix method name typo ([#1764](https://github.com/openai/openai-python/issues/1764)) ([e1bcfe8](https://github.com/openai/openai-python/commit/e1bcfe86554017ac63055060153c4fd72e65c0cf))

## 1.50.2 (2024-09-27)

Full Changelog: [v1.50.1...v1.50.2](https://github.com/openai/openai-python/compare/v1.50.1...v1.50.2)

### Bug Fixes

* **audio:** correct types for transcriptions / translations ([#1755](https://github.com/openai/openai-python/issues/1755)) ([76c1f3f](https://github.com/openai/openai-python/commit/76c1f3f318b68003aae124c02efc4547a398a864))

## 1.50.1 (2024-09-27)

Full Changelog: [v1.50.0...v1.50.1](https://github.com/openai/openai-python/compare/v1.50.0...v1.50.1)

### Documentation

* **helpers:** fix chat completion anchor ([#1753](https://github.com/openai/openai-python/issues/1753)) ([956d4e8](https://github.com/openai/openai-python/commit/956d4e8e32507fbce399f4619e06daa9d37a0532))

## 1.50.0 (2024-09-26)

Full Changelog: [v1.49.0...v1.50.0](https://github.com/openai/openai-python/compare/v1.49.0...v1.50.0)

### Features

* **structured outputs:** add support for accessing raw responses ([#1748](https://github.com/openai/openai-python/issues/1748)) ([0189e28](https://github.com/openai/openai-python/commit/0189e28b0b062a28b16343da0460a4f0f4e17a9a))


### Chores

* **pydantic v1:** exclude specific properties when rich printing ([#1751](https://github.com/openai/openai-python/issues/1751)) ([af535ce](https://github.com/openai/openai-python/commit/af535ce6a523eca39438f117a3e55f16064567a9))

## 1.49.0 (2024-09-26)

Full Changelog: [v1.48.0...v1.49.0](https://github.com/openai/openai-python/compare/v1.48.0...v1.49.0)

### Features

* **api:** add omni-moderation model ([#1750](https://github.com/openai/openai-python/issues/1750)) ([05b50da](https://github.com/openai/openai-python/commit/05b50da5428d5c7b5ea09626bcd88f8423762bf8))


### Chores

* **internal:** update test snapshots ([#1749](https://github.com/openai/openai-python/issues/1749)) ([42f054e](https://github.com/openai/openai-python/commit/42f054ee7afa8ce8316c2ecd90608a0f7e13bfdd))

## 1.48.0 (2024-09-25)

Full Changelog: [v1.47.1...v1.48.0](https://github.com/openai/openai-python/compare/v1.47.1...v1.48.0)

### Features

* **client:** allow overriding retry count header ([#1745](https://github.com/openai/openai-python/issues/1745)) ([9f07d4d](https://github.com/openai/openai-python/commit/9f07d4dbd6f24108a1f5e0309037318858f5a229))


### Bug Fixes

* **audio:** correct response_format translations type ([#1743](https://github.com/openai/openai-python/issues/1743)) ([b912108](https://github.com/openai/openai-python/commit/b9121089c696bc943323e2e75d4706401d809aaa))


### Chores

* **internal:** use `typing_extensions.overload` instead of `typing` ([#1740](https://github.com/openai/openai-python/issues/1740)) ([2522bd5](https://github.com/openai/openai-python/commit/2522bd59f7b5e903e4fc856a4c5dbdbe66bba37f))

## 1.47.1 (2024-09-23)

Full Changelog: [v1.47.0...v1.47.1](https://github.com/openai/openai-python/compare/v1.47.0...v1.47.1)

### Bug Fixes

* **pydantic v1:** avoid warnings error ([1e8e7d1](https://github.com/openai/openai-python/commit/1e8e7d1f01a4ab4153085bc20484a19613d993b3))

## 1.47.0 (2024-09-20)

Full Changelog: [v1.46.1...v1.47.0](https://github.com/openai/openai-python/compare/v1.46.1...v1.47.0)

### Features

* **client:** send retry count header ([21b0c00](https://github.com/openai/openai-python/commit/21b0c0043406d81971f87455e5a48b17935dc346))


### Chores

* **types:** improve type name for embedding models ([#1730](https://github.com/openai/openai-python/issues/1730)) ([4b4eb2b](https://github.com/openai/openai-python/commit/4b4eb2b37877728d2124ad5651ceebf615c0ab28))

## 1.46.1 (2024-09-19)

Full Changelog: [v1.46.0...v1.46.1](https://github.com/openai/openai-python/compare/v1.46.0...v1.46.1)

### Bug Fixes

* **client:** handle domains with underscores ([#1726](https://github.com/openai/openai-python/issues/1726)) ([cd194df](https://github.com/openai/openai-python/commit/cd194dfdc418a84589bd903357cba349e9ad3e78))


### Chores

* **streaming:** silence pydantic model_dump warnings ([#1722](https://github.com/openai/openai-python/issues/1722)) ([30f84b9](https://github.com/openai/openai-python/commit/30f84b96081ac37f60e40a75d765dbbf563b61b3))

## 1.46.0 (2024-09-17)

Full Changelog: [v1.45.1...v1.46.0](https://github.com/openai/openai-python/compare/v1.45.1...v1.46.0)

### Features

* **client:** add ._request_id property to object responses ([#1707](https://github.com/openai/openai-python/issues/1707)) ([8b3da05](https://github.com/openai/openai-python/commit/8b3da05a35b33245aec98693a0540ace6218a61b))


### Documentation

* **readme:** add examples for chat with image content ([#1703](https://github.com/openai/openai-python/issues/1703)) ([192b8f2](https://github.com/openai/openai-python/commit/192b8f2b6a49f462e48c1442858931875524ab49))

## 1.45.1 (2024-09-16)

Full Changelog: [v1.45.0...v1.45.1](https://github.com/openai/openai-python/compare/v1.45.0...v1.45.1)

### Chores

* **internal:** bump pyright / mypy version ([#1717](https://github.com/openai/openai-python/issues/1717)) ([351af85](https://github.com/openai/openai-python/commit/351af85c5b813391910301a5049edddc8c9e70dd))
* **internal:** bump ruff ([#1714](https://github.com/openai/openai-python/issues/1714)) ([aceaf64](https://github.com/openai/openai-python/commit/aceaf641eedd092ed42e4aaf031e8cfbf37e4212))
* **internal:** update spec link ([#1716](https://github.com/openai/openai-python/issues/1716)) ([ca58c7f](https://github.com/openai/openai-python/commit/ca58c7f83a7cede0367dec2500127573c9b00d1f))


### Documentation

* update CONTRIBUTING.md ([#1710](https://github.com/openai/openai-python/issues/1710)) ([4d45eb5](https://github.com/openai/openai-python/commit/4d45eb5eb794bcc5076c022be09e06fae103abcc))

## 1.45.0 (2024-09-12)

Full Changelog: [v1.44.1...v1.45.0](https://github.com/openai/openai-python/compare/v1.44.1...v1.45.0)

### Features

* **api:** add o1 models ([#1708](https://github.com/openai/openai-python/issues/1708)) ([06bd42e](https://github.com/openai/openai-python/commit/06bd42e77121a6abd4826a79ce1848812d956576))
* **errors:** include completion in LengthFinishReasonError ([#1701](https://github.com/openai/openai-python/issues/1701)) ([b0e3256](https://github.com/openai/openai-python/commit/b0e32562aff9aceafec994d3b047f7c2a9f11524))


### Bug Fixes

* **types:** correctly mark stream discriminator as optional ([#1706](https://github.com/openai/openai-python/issues/1706)) ([80f02f9](https://github.com/openai/openai-python/commit/80f02f9e5f83fac9cd2f4172b733a92ad01399b2))

## 1.44.1 (2024-09-09)

Full Changelog: [v1.44.0...v1.44.1](https://github.com/openai/openai-python/compare/v1.44.0...v1.44.1)

### Chores

* add docstrings to raw response properties ([#1696](https://github.com/openai/openai-python/issues/1696)) ([1d2a19b](https://github.com/openai/openai-python/commit/1d2a19b0e8acab54c35ef2171d33321943488fdc))


### Documentation

* **readme:** add section on determining installed version ([#1697](https://github.com/openai/openai-python/issues/1697)) ([0255735](https://github.com/openai/openai-python/commit/0255735930d9c657c78e85e7f03fd1eb98a1e378))
* **readme:** improve custom `base_url` example ([#1694](https://github.com/openai/openai-python/issues/1694)) ([05eec8a](https://github.com/openai/openai-python/commit/05eec8a0b7fcdc8651021f2e685214a353b861d1))

## 1.44.0 (2024-09-06)

Full Changelog: [v1.43.1...v1.44.0](https://github.com/openai/openai-python/compare/v1.43.1...v1.44.0)

### Features

* **vector store:** improve chunking strategy type names ([#1690](https://github.com/openai/openai-python/issues/1690)) ([e82cd85](https://github.com/openai/openai-python/commit/e82cd85ac4962e36cb3b139c503069b56918688f))

## 1.43.1 (2024-09-05)

Full Changelog: [v1.43.0...v1.43.1](https://github.com/openai/openai-python/compare/v1.43.0...v1.43.1)

### Chores

* pyproject.toml formatting changes ([#1687](https://github.com/openai/openai-python/issues/1687)) ([3387ede](https://github.com/openai/openai-python/commit/3387ede0b896788bf1197378b01941c75bd6e179))

## 1.43.0 (2024-08-29)

Full Changelog: [v1.42.0...v1.43.0](https://github.com/openai/openai-python/compare/v1.42.0...v1.43.0)

### Features

* **api:** add file search result details to run steps ([#1681](https://github.com/openai/openai-python/issues/1681)) ([f5449c0](https://github.com/openai/openai-python/commit/f5449c07580ac9707f0387f86f4772fbf0a874b6))

## 1.42.0 (2024-08-20)

Full Changelog: [v1.41.1...v1.42.0](https://github.com/openai/openai-python/compare/v1.41.1...v1.42.0)

### Features

* **parsing:** add support for pydantic dataclasses ([#1655](https://github.com/openai/openai-python/issues/1655)) ([101bee9](https://github.com/openai/openai-python/commit/101bee9844f725d2174796c3d09a58d3aa079fad))


### Chores

* **ci:** also run pydantic v1 tests ([#1666](https://github.com/openai/openai-python/issues/1666)) ([af2a1ca](https://github.com/openai/openai-python/commit/af2a1ca408a406098c6c79837aa3561b822e08ec))

## 1.41.1 (2024-08-19)

Full Changelog: [v1.41.0...v1.41.1](https://github.com/openai/openai-python/compare/v1.41.0...v1.41.1)

### Bug Fixes

* **json schema:** remove `None` defaults ([#1663](https://github.com/openai/openai-python/issues/1663)) ([30215c1](https://github.com/openai/openai-python/commit/30215c15df613cf9c36cafd717af79158c9db3e5))


### Chores

* **client:** fix parsing union responses when non-json is returned ([#1665](https://github.com/openai/openai-python/issues/1665)) ([822c37d](https://github.com/openai/openai-python/commit/822c37de49eb2ffe8c05122f7520ba87bd76e30b))

## 1.41.0 (2024-08-16)

Full Changelog: [v1.40.8...v1.41.0](https://github.com/openai/openai-python/compare/v1.40.8...v1.41.0)

### Features

* **client:** add uploads.upload_file helper ([aae079d](https://github.com/openai/openai-python/commit/aae079daa3c1763ab0e46bad766ae5261b475806))

## 1.40.8 (2024-08-15)

Full Changelog: [v1.40.7...v1.40.8](https://github.com/openai/openai-python/compare/v1.40.7...v1.40.8)

### Chores

* **types:** define FilePurpose enum ([#1653](https://github.com/openai/openai-python/issues/1653)) ([3c2eeae](https://github.com/openai/openai-python/commit/3c2eeae32adf5d4ab6bc622be6f9a95a1a298dd3))

## 1.40.7 (2024-08-15)

Full Changelog: [v1.40.6...v1.40.7](https://github.com/openai/openai-python/compare/v1.40.6...v1.40.7)

### Bug Fixes

* **cli/migrate:** change grit binaries download source ([#1649](https://github.com/openai/openai-python/issues/1649)) ([85e8935](https://github.com/openai/openai-python/commit/85e8935d9a123b92964d39a98334a975a06ab845))


### Chores

* **docs:** fix typo in example snippet ([4e83b57](https://github.com/openai/openai-python/commit/4e83b57ffbb64e1c98c19968557dc68a0b65d0b3))
* **internal:** use different 32bit detection method ([#1652](https://github.com/openai/openai-python/issues/1652)) ([5831af6](https://github.com/openai/openai-python/commit/5831af65048af2a5df9e3ea4a48b8fff2e66dd8c))

## 1.40.6 (2024-08-12)

Full Changelog: [v1.40.5...v1.40.6](https://github.com/openai/openai-python/compare/v1.40.5...v1.40.6)

### Chores

* **examples:** minor formatting changes ([#1644](https://github.com/openai/openai-python/issues/1644)) ([e08acf1](https://github.com/openai/openai-python/commit/e08acf1c6edd1501ed70c4634cd884ab1658af0d))
* **internal:** update some imports ([#1642](https://github.com/openai/openai-python/issues/1642)) ([fce1ea7](https://github.com/openai/openai-python/commit/fce1ea72a89ba2737bc77775fe04f3a21ecb28e7))
* sync openapi url ([#1646](https://github.com/openai/openai-python/issues/1646)) ([8ae3801](https://github.com/openai/openai-python/commit/8ae380123ada0bfaca9961e222a0e9c8b585e2d4))
* **tests:** fix pydantic v1 tests ([2623630](https://github.com/openai/openai-python/commit/26236303f0f6de5df887e8ee3e41d5bc39a3abb1))

## 1.40.5 (2024-08-12)

Full Changelog: [v1.40.4...v1.40.5](https://github.com/openai/openai-python/compare/v1.40.4...v1.40.5)

### Documentation

* **helpers:** make async client usage more clear ([34e1edf](https://github.com/openai/openai-python/commit/34e1edf29d6008df7196aaebc45172fa536c6410)), closes [#1639](https://github.com/openai/openai-python/issues/1639)

## 1.40.4 (2024-08-12)

Full Changelog: [v1.40.3...v1.40.4](https://github.com/openai/openai-python/compare/v1.40.3...v1.40.4)

### Bug Fixes

* **json schema:** unravel `$ref`s alongside additional keys ([c7a3d29](https://github.com/openai/openai-python/commit/c7a3d2986acaf3b31844b39608d03265ad87bb04))
* **json schema:** unwrap `allOf`s with one entry ([53d964d](https://github.com/openai/openai-python/commit/53d964defebdf385d7d832ec7f13111b4af13c27))

## 1.40.3 (2024-08-10)

Full Changelog: [v1.40.2...v1.40.3](https://github.com/openai/openai-python/compare/v1.40.2...v1.40.3)

### Chores

* **ci:** bump prism mock server version ([#1630](https://github.com/openai/openai-python/issues/1630)) ([214d8fd](https://github.com/openai/openai-python/commit/214d8fd8d7d43c06c7dfe02680847a6a60988120))
* **ci:** codeowners file ([#1627](https://github.com/openai/openai-python/issues/1627)) ([c059a20](https://github.com/openai/openai-python/commit/c059a20c8cd2124178641c9d8688e276b1cf1d59))
* **internal:** ensure package is importable in lint cmd ([#1631](https://github.com/openai/openai-python/issues/1631)) ([779e6d0](https://github.com/openai/openai-python/commit/779e6d081eb55c158f2aa1962190079eb7f1335e))

## 1.40.2 (2024-08-08)

Full Changelog: [v1.40.1...v1.40.2](https://github.com/openai/openai-python/compare/v1.40.1...v1.40.2)

### Bug Fixes

* **client:** raise helpful error message for response_format misuse ([18191da](https://github.com/openai/openai-python/commit/18191dac8e1437a0f708525d474b7ecfe459d966))
* **json schema:** support recursive BaseModels in Pydantic v1 ([#1623](https://github.com/openai/openai-python/issues/1623)) ([43e10c0](https://github.com/openai/openai-python/commit/43e10c0f251a42f1e6497f360c6c23d3058b3da3))


### Chores

* **internal:** format some docstrings ([d34a081](https://github.com/openai/openai-python/commit/d34a081c30f869646145919b2256ded115241eb5))
* **internal:** updates ([#1624](https://github.com/openai/openai-python/issues/1624)) ([598e7a2](https://github.com/openai/openai-python/commit/598e7a23768e7addbe1319ada2e87caee3cf0d14))

## 1.40.1 (2024-08-07)

Full Changelog: [v1.40.0...v1.40.1](https://github.com/openai/openai-python/compare/v1.40.0...v1.40.1)

### Chores

* **internal:** update OpenAPI spec url ([#1608](https://github.com/openai/openai-python/issues/1608)) ([5392753](https://github.com/openai/openai-python/commit/53927531fc101e96b9e3f5d44f34b298055f496a))
* **internal:** update test snapshots ([a11d1cb](https://github.com/openai/openai-python/commit/a11d1cb5d04aac0bf69dc10a3a21fa95575c0aa0))

## 1.40.0 (2024-08-06)

Full Changelog: [v1.39.0...v1.40.0](https://github.com/openai/openai-python/compare/v1.39.0...v1.40.0)

### Features

* **api:** add structured outputs support ([e8dba7d](https://github.com/openai/openai-python/commit/e8dba7d0e08a7d0de5952be716e0efe9ae373759))


### Chores

* **internal:** bump ruff version ([#1604](https://github.com/openai/openai-python/issues/1604)) ([3e19a87](https://github.com/openai/openai-python/commit/3e19a87255d8e92716689656afaa3f16297773b6))
* **internal:** update pydantic compat helper function ([#1607](https://github.com/openai/openai-python/issues/1607)) ([973c18b](https://github.com/openai/openai-python/commit/973c18b259a0e4a8134223f50a5f660b86650949))

## 1.39.0 (2024-08-05)

Full Changelog: [v1.38.0...v1.39.0](https://github.com/openai/openai-python/compare/v1.38.0...v1.39.0)

### Features

* **client:** add `retries_taken` to raw response class ([#1601](https://github.com/openai/openai-python/issues/1601)) ([777822b](https://github.com/openai/openai-python/commit/777822b39b7f9ebd6272d0af8fc04f9d657bd886))


### Bug Fixes

* **assistants:** add parallel_tool_calls param to runs.stream ([113e82a](https://github.com/openai/openai-python/commit/113e82a82c7390660ad3324fa8f9842f83b27571))


### Chores

* **internal:** bump pyright ([#1599](https://github.com/openai/openai-python/issues/1599)) ([27f0f10](https://github.com/openai/openai-python/commit/27f0f107e39d16adc0d5a50ffe4c687e0e3c42e5))
* **internal:** test updates ([#1602](https://github.com/openai/openai-python/issues/1602)) ([af22d80](https://github.com/openai/openai-python/commit/af22d8079cf44cde5f03a206e78b900f8413dc43))
* **internal:** use `TypeAlias` marker for type assignments ([#1597](https://github.com/openai/openai-python/issues/1597)) ([5907ea0](https://github.com/openai/openai-python/commit/5907ea04d6f5e0ffd17c38ad6a644a720ece8abe))

## 1.38.0 (2024-08-02)

Full Changelog: [v1.37.2...v1.38.0](https://github.com/openai/openai-python/compare/v1.37.2...v1.38.0)

### Features

* extract out `ImageModel`, `AudioModel`, `SpeechModel` ([#1586](https://github.com/openai/openai-python/issues/1586)) ([b800316](https://github.com/openai/openai-python/commit/b800316aee6c8b2aeb609ca4c41972adccd2fa7a))
* make enums not nominal ([#1588](https://github.com/openai/openai-python/issues/1588)) ([ab4519b](https://github.com/openai/openai-python/commit/ab4519bc45f5512c8c5165641c217385d999809c))

## 1.37.2 (2024-08-01)

Full Changelog: [v1.37.1...v1.37.2](https://github.com/openai/openai-python/compare/v1.37.1...v1.37.2)

### Chores

* **internal:** add type construction helper ([#1584](https://github.com/openai/openai-python/issues/1584)) ([cbb186a](https://github.com/openai/openai-python/commit/cbb186a534b520fa5b11a9b371b175e3f6a6482b))
* **runs/create_and_poll:** add parallel_tool_calls request param ([04b3e6c](https://github.com/openai/openai-python/commit/04b3e6c39ee5a7088e0e4dfa4c06f3dcce901a57))

## 1.37.1 (2024-07-25)

Full Changelog: [v1.37.0...v1.37.1](https://github.com/openai/openai-python/compare/v1.37.0...v1.37.1)

### Chores

* **tests:** update prism version ([#1572](https://github.com/openai/openai-python/issues/1572)) ([af82593](https://github.com/openai/openai-python/commit/af8259393673af1ef6ec711da6297eb4ad55b66e))

## 1.37.0 (2024-07-22)

Full Changelog: [v1.36.1...v1.37.0](https://github.com/openai/openai-python/compare/v1.36.1...v1.37.0)

### Features

* **api:** add uploads endpoints ([#1568](https://github.com/openai/openai-python/issues/1568)) ([d877b6d](https://github.com/openai/openai-python/commit/d877b6dabb9b3e8da6ff2f46de1120af54de398d))


### Bug Fixes

* **cli/audio:** handle non-json response format ([#1557](https://github.com/openai/openai-python/issues/1557)) ([bb7431f](https://github.com/openai/openai-python/commit/bb7431f602602d4c74d75809c6934a7fd192972d))


### Documentation

* **readme:** fix example snippet imports ([#1569](https://github.com/openai/openai-python/issues/1569)) ([0c90af6](https://github.com/openai/openai-python/commit/0c90af6412b3314c2257b9b8eb7fabd767f32ef6))

## 1.36.1 (2024-07-20)

Full Changelog: [v1.36.0...v1.36.1](https://github.com/openai/openai-python/compare/v1.36.0...v1.36.1)

### Bug Fixes

* **types:** add gpt-4o-mini to more assistants methods ([39a8a37](https://github.com/openai/openai-python/commit/39a8a372eb3f2d75fd4310d42294d05175a59fd8))

## 1.36.0 (2024-07-19)

Full Changelog: [v1.35.15...v1.36.0](https://github.com/openai/openai-python/compare/v1.35.15...v1.36.0)

### Features

* **api:** add new gpt-4o-mini models ([#1561](https://github.com/openai/openai-python/issues/1561)) ([5672ad4](https://github.com/openai/openai-python/commit/5672ad40aaa3498f6143baa48fc22bb1a3475bea))

## 1.35.15 (2024-07-18)

Full Changelog: [v1.35.14...v1.35.15](https://github.com/openai/openai-python/compare/v1.35.14...v1.35.15)

### Chores

* **docs:** document how to do per-request http client customization ([#1560](https://github.com/openai/openai-python/issues/1560)) ([24c0768](https://github.com/openai/openai-python/commit/24c076873c5cb2abe0d3e285b99aa110451b0f19))
* **internal:** update formatting ([#1553](https://github.com/openai/openai-python/issues/1553)) ([e1389bc](https://github.com/openai/openai-python/commit/e1389bcc26f3aac63fc6bc9bb151c9a330d95b4e))

## 1.35.14 (2024-07-15)

Full Changelog: [v1.35.13...v1.35.14](https://github.com/openai/openai-python/compare/v1.35.13...v1.35.14)

### Chores

* **docs:** minor update to formatting of API link in README ([#1550](https://github.com/openai/openai-python/issues/1550)) ([a6e59c6](https://github.com/openai/openai-python/commit/a6e59c6bbff9e1132aa323c0ecb3be7f0692ae42))
* **internal:** minor formatting changes ([ee1c62e](https://github.com/openai/openai-python/commit/ee1c62ede01872e76156d886af4aab5f8eb1cc64))
* **internal:** minor options / compat functions updates ([#1549](https://github.com/openai/openai-python/issues/1549)) ([a0701b5](https://github.com/openai/openai-python/commit/a0701b5dbeda4ac2d8a4b093aee4bdad9d674ee2))

## 1.35.13 (2024-07-10)

Full Changelog: [v1.35.12...v1.35.13](https://github.com/openai/openai-python/compare/v1.35.12...v1.35.13)

### Bug Fixes

* **threads/runs/create_and_run_stream:** correct tool_resources param ([8effd08](https://github.com/openai/openai-python/commit/8effd08be3ab1cf509bdbfd9f174f9186fdbf71f))


### Chores

* **internal:** add helper function ([#1538](https://github.com/openai/openai-python/issues/1538)) ([81655a0](https://github.com/openai/openai-python/commit/81655a012e28c0240e71cf74b77ad1f9ac630906))

## 1.35.12 (2024-07-09)

Full Changelog: [v1.35.11...v1.35.12](https://github.com/openai/openai-python/compare/v1.35.11...v1.35.12)

### Bug Fixes

* **azure:** refresh auth token during retries ([#1533](https://github.com/openai/openai-python/issues/1533)) ([287926e](https://github.com/openai/openai-python/commit/287926e4c0920b930af2b9d3d8b46a24e78e2979))
* **tests:** fresh_env() now resets new environment values ([64da888](https://github.com/openai/openai-python/commit/64da888ca4d13f0b4b6d9e22ec93a897b2d6bb24))

## 1.35.11 (2024-07-09)

Full Changelog: [v1.35.10...v1.35.11](https://github.com/openai/openai-python/compare/v1.35.10...v1.35.11)

### Chores

* **internal:** minor request options handling changes ([#1534](https://github.com/openai/openai-python/issues/1534)) ([8b0e493](https://github.com/openai/openai-python/commit/8b0e49302b3fcc32cf02393bf28354c577188904))

## 1.35.10 (2024-07-03)

Full Changelog: [v1.35.9...v1.35.10](https://github.com/openai/openai-python/compare/v1.35.9...v1.35.10)

### Chores

* **ci:** update rye to v0.35.0 ([#1523](https://github.com/openai/openai-python/issues/1523)) ([dd118c4](https://github.com/openai/openai-python/commit/dd118c422019df00b153104b7bddf892c2ec7417))

## 1.35.9 (2024-07-02)

Full Changelog: [v1.35.8...v1.35.9](https://github.com/openai/openai-python/compare/v1.35.8...v1.35.9)

### Bug Fixes

* **client:** always respect content-type multipart/form-data if provided ([#1519](https://github.com/openai/openai-python/issues/1519)) ([6da55e1](https://github.com/openai/openai-python/commit/6da55e10c4ba8c78687baedc68d5599ea120d05c))


### Chores

* minor change to tests ([#1521](https://github.com/openai/openai-python/issues/1521)) ([a679c0b](https://github.com/openai/openai-python/commit/a679c0bd1e041434440174daa7a64289746856d1))

## 1.35.8 (2024-07-02)

Full Changelog: [v1.35.7...v1.35.8](https://github.com/openai/openai-python/compare/v1.35.7...v1.35.8)

### Chores

* gitignore test server logs ([#1509](https://github.com/openai/openai-python/issues/1509)) ([936d840](https://github.com/openai/openai-python/commit/936d84094a28ad0a2b4a20e2b3bbf1674048223e))
* **internal:** add helper method for constructing `BaseModel`s ([#1517](https://github.com/openai/openai-python/issues/1517)) ([e5ddbf5](https://github.com/openai/openai-python/commit/e5ddbf554ce4b6be4b59114a36e69f02ca724acf))
* **internal:** add reflection helper function ([#1508](https://github.com/openai/openai-python/issues/1508)) ([6044e1b](https://github.com/openai/openai-python/commit/6044e1bbfa9e46a01faf5a9edf198f86fa4c6dd0))
* **internal:** add rich as a dev dependency ([#1514](https://github.com/openai/openai-python/issues/1514)) ([8a2b4e4](https://github.com/openai/openai-python/commit/8a2b4e4c1233dca916531ebc65d65a8d35fa7b7b))

## 1.35.7 (2024-06-27)

Full Changelog: [v1.35.6...v1.35.7](https://github.com/openai/openai-python/compare/v1.35.6...v1.35.7)

### Bug Fixes

* **build:** include more files in sdist builds ([#1504](https://github.com/openai/openai-python/issues/1504)) ([730c1b5](https://github.com/openai/openai-python/commit/730c1b53b1a61e218a85aa2d1cf3ba4775618755))

## 1.35.6 (2024-06-27)

Full Changelog: [v1.35.5...v1.35.6](https://github.com/openai/openai-python/compare/v1.35.5...v1.35.6)

### Documentation

* **readme:** improve some wording ([#1392](https://github.com/openai/openai-python/issues/1392)) ([a58a052](https://github.com/openai/openai-python/commit/a58a05215b560ebcf3ff3eb1dd997259720a48f3))

## 1.35.5 (2024-06-26)

Full Changelog: [v1.35.4...v1.35.5](https://github.com/openai/openai-python/compare/v1.35.4...v1.35.5)

### Bug Fixes

* **cli/migrate:** avoid reliance on Python 3.12 argument ([be7a06b](https://github.com/openai/openai-python/commit/be7a06b3875e3ecb9229d67a41e290ca218f092d))

## 1.35.4 (2024-06-26)

Full Changelog: [v1.35.3...v1.35.4](https://github.com/openai/openai-python/compare/v1.35.3...v1.35.4)

### Bug Fixes

* **docs:** fix link to advanced python httpx docs ([#1499](https://github.com/openai/openai-python/issues/1499)) ([cf45cd5](https://github.com/openai/openai-python/commit/cf45cd5942cecec569072146673ddfc0e0ec108e))
* temporarily patch upstream version to fix broken release flow ([#1500](https://github.com/openai/openai-python/issues/1500)) ([4f10470](https://github.com/openai/openai-python/commit/4f10470f5f74fc258a78fa6d897d8ab5b70dcf52))


### Chores

* **doc:** clarify service tier default value ([#1496](https://github.com/openai/openai-python/issues/1496)) ([ba39667](https://github.com/openai/openai-python/commit/ba39667c4faa8e10457347be41334ca9639186d4))

## 1.35.3 (2024-06-20)

Full Changelog: [v1.35.2...v1.35.3](https://github.com/openai/openai-python/compare/v1.35.2...v1.35.3)

### Bug Fixes

* **tests:** add explicit type annotation ([9345f10](https://github.com/openai/openai-python/commit/9345f104889056b2ef6646d65375925a0a3bae03))

## 1.35.2 (2024-06-20)

Full Changelog: [v1.35.1...v1.35.2](https://github.com/openai/openai-python/compare/v1.35.1...v1.35.2)

### Bug Fixes

* **api:** add missing parallel_tool_calls arguments ([4041e4f](https://github.com/openai/openai-python/commit/4041e4f6ea1e2316179a82031001308be23a2524))

## 1.35.1 (2024-06-19)

Full Changelog: [v1.35.0...v1.35.1](https://github.com/openai/openai-python/compare/v1.35.0...v1.35.1)

### Bug Fixes

* **client/async:** avoid blocking io call for platform headers ([#1488](https://github.com/openai/openai-python/issues/1488)) ([ae64c05](https://github.com/openai/openai-python/commit/ae64c05cbae76a58b592d913bee6ac1ef9611d4c))

## 1.35.0 (2024-06-18)

Full Changelog: [v1.34.0...v1.35.0](https://github.com/openai/openai-python/compare/v1.34.0...v1.35.0)

### Features

* **api:** add service tier argument for chat completions ([#1486](https://github.com/openai/openai-python/issues/1486)) ([b4b4e66](https://github.com/openai/openai-python/commit/b4b4e660b8bb7ae937787fcab9b40feaeba7f711))

## 1.34.0 (2024-06-12)

Full Changelog: [v1.33.0...v1.34.0](https://github.com/openai/openai-python/compare/v1.33.0...v1.34.0)

### Features

* **api:** updates ([#1481](https://github.com/openai/openai-python/issues/1481)) ([b83db36](https://github.com/openai/openai-python/commit/b83db362f0c9a5a4d55588b954fb1df1a68c98e3))

## 1.33.0 (2024-06-07)

Full Changelog: [v1.32.1...v1.33.0](https://github.com/openai/openai-python/compare/v1.32.1...v1.33.0)

### Features

* **api:** adding chunking_strategy to polling helpers ([#1478](https://github.com/openai/openai-python/issues/1478)) ([83be2a1](https://github.com/openai/openai-python/commit/83be2a13e0384d3de52190d86ccb1b5d7a197d84))

## 1.32.1 (2024-06-07)

Full Changelog: [v1.32.0...v1.32.1](https://github.com/openai/openai-python/compare/v1.32.0...v1.32.1)

### Bug Fixes

* remove erroneous thread create argument ([#1476](https://github.com/openai/openai-python/issues/1476)) ([43175c4](https://github.com/openai/openai-python/commit/43175c40e607d626a77a151691778c35a0e60eec))

## 1.32.0 (2024-06-06)

Full Changelog: [v1.31.2...v1.32.0](https://github.com/openai/openai-python/compare/v1.31.2...v1.32.0)

### Features

* **api:** updates ([#1474](https://github.com/openai/openai-python/issues/1474)) ([87ddff0](https://github.com/openai/openai-python/commit/87ddff0e6e64650691a8e32f7477b7a00e06ed23))

## 1.31.2 (2024-06-06)

Full Changelog: [v1.31.1...v1.31.2](https://github.com/openai/openai-python/compare/v1.31.1...v1.31.2)

### Chores

* **internal:** minor refactor of tests ([#1471](https://github.com/openai/openai-python/issues/1471)) ([b7f2298](https://github.com/openai/openai-python/commit/b7f229866f249d16e995db361b923bb4c0b7f1d4))

## 1.31.1 (2024-06-05)

Full Changelog: [v1.31.0...v1.31.1](https://github.com/openai/openai-python/compare/v1.31.0...v1.31.1)

### Chores

* **internal:** minor change to tests ([#1466](https://github.com/openai/openai-python/issues/1466)) ([cb33e71](https://github.com/openai/openai-python/commit/cb33e7152f25fb16cf4c39a6e4714169c62d6af8))

## 1.31.0 (2024-06-03)

Full Changelog: [v1.30.5...v1.31.0](https://github.com/openai/openai-python/compare/v1.30.5...v1.31.0)

### Features

* **api:** updates ([#1461](https://github.com/openai/openai-python/issues/1461)) ([0d7cc5e](https://github.com/openai/openai-python/commit/0d7cc5e48c565fe10ee6e8ca4d050175eb543bcb))


### Chores

* fix lint ([1886dd4](https://github.com/openai/openai-python/commit/1886dd4c98d7a7b3a679bff739cb38badf5ae96c))

## 1.30.5 (2024-05-29)

Full Changelog: [v1.30.4...v1.30.5](https://github.com/openai/openai-python/compare/v1.30.4...v1.30.5)

### Chores

* **internal:** fix lint issue ([35a1e80](https://github.com/openai/openai-python/commit/35a1e806891c34d5cc13ac8341751e5b15b52319))

## 1.30.4 (2024-05-28)

Full Changelog: [v1.30.3...v1.30.4](https://github.com/openai/openai-python/compare/v1.30.3...v1.30.4)

### Chores

* add missing __all__ definitions ([7fba60f](https://github.com/openai/openai-python/commit/7fba60f2e8adc26e83080aaf3e436eb9891e1253))
* **internal:** fix lint issue ([f423cd0](https://github.com/openai/openai-python/commit/f423cd05d33b3e734eda7c0c008faac14ae96bb7))

## 1.30.3 (2024-05-24)

Full Changelog: [v1.30.2...v1.30.3](https://github.com/openai/openai-python/compare/v1.30.2...v1.30.3)

### Chores

* **ci:** update rye install location ([#1440](https://github.com/openai/openai-python/issues/1440)) ([8a0e5bf](https://github.com/openai/openai-python/commit/8a0e5bf4c03d9c714799fad43be68ac9c2b1f37a))
* **internal:** bump pyright ([#1442](https://github.com/openai/openai-python/issues/1442)) ([64a151e](https://github.com/openai/openai-python/commit/64a151eae705d55484f870df461434c0a6961e2b))
* **internal:** fix lint issue ([#1444](https://github.com/openai/openai-python/issues/1444)) ([b0eb458](https://github.com/openai/openai-python/commit/b0eb4582e050b0a25af3d80d2cb584bfc7cd11ab))


### Documentation

* **contributing:** update references to rye-up.com ([dcc34a2](https://github.com/openai/openai-python/commit/dcc34a26d1a6a0debf440724fad658c77547048c))

## 1.30.2 (2024-05-23)

Full Changelog: [v1.30.1...v1.30.2](https://github.com/openai/openai-python/compare/v1.30.1...v1.30.2)

### Chores

* **ci:** update rye install location ([#1436](https://github.com/openai/openai-python/issues/1436)) ([f7cc4e7](https://github.com/openai/openai-python/commit/f7cc4e7d5d0964a4a5d53e602379770c2576e1aa))

## 1.30.1 (2024-05-14)

Full Changelog: [v1.30.0...v1.30.1](https://github.com/openai/openai-python/compare/v1.30.0...v1.30.1)

### Chores

* **internal:** add slightly better logging to scripts ([#1422](https://github.com/openai/openai-python/issues/1422)) ([43dffab](https://github.com/openai/openai-python/commit/43dffabb3bed4edf8a6e523cbb289f733a5f9b24))

## 1.30.0 (2024-05-14)

Full Changelog: [v1.29.0...v1.30.0](https://github.com/openai/openai-python/compare/v1.29.0...v1.30.0)

### Features

* **api:** add incomplete state ([#1420](https://github.com/openai/openai-python/issues/1420)) ([6484984](https://github.com/openai/openai-python/commit/648498412d1c7740e6b67ed4d0a55b89ff29d3b1))

## 1.29.0 (2024-05-13)

Full Changelog: [v1.28.2...v1.29.0](https://github.com/openai/openai-python/compare/v1.28.2...v1.29.0)

### Features

* **api:** add gpt-4o model ([#1417](https://github.com/openai/openai-python/issues/1417)) ([4f09f8c](https://github.com/openai/openai-python/commit/4f09f8c6cc4450f5e61f158f1bd54c513063a1a8))

## 1.28.2 (2024-05-13)

Full Changelog: [v1.28.1...v1.28.2](https://github.com/openai/openai-python/compare/v1.28.1...v1.28.2)

### Bug Fixes

* **client:** accidental blocking sleep in async code ([#1415](https://github.com/openai/openai-python/issues/1415)) ([0ac6ecb](https://github.com/openai/openai-python/commit/0ac6ecb8d4e52f895bc3ae1f589f22ddaaef6204))


### Chores

* **internal:** bump pydantic dependency ([#1413](https://github.com/openai/openai-python/issues/1413)) ([ed73d1d](https://github.com/openai/openai-python/commit/ed73d1db540714e29a1ba30e3aa6429aae8b1dd8))

## 1.28.1 (2024-05-11)

Full Changelog: [v1.28.0...v1.28.1](https://github.com/openai/openai-python/compare/v1.28.0...v1.28.1)

### Chores

* **docs:** add SECURITY.md ([#1408](https://github.com/openai/openai-python/issues/1408)) ([119970a](https://github.com/openai/openai-python/commit/119970a31b67e88c623d50855290ccf3847c10eb))

## 1.28.0 (2024-05-09)

Full Changelog: [v1.27.0...v1.28.0](https://github.com/openai/openai-python/compare/v1.27.0...v1.28.0)

### Features

* **api:** add message image content ([#1405](https://github.com/openai/openai-python/issues/1405)) ([a115de6](https://github.com/openai/openai-python/commit/a115de60ce1ca503a7659bb9a19c18699d4d9bcb))

## 1.27.0 (2024-05-08)

Full Changelog: [v1.26.0...v1.27.0](https://github.com/openai/openai-python/compare/v1.26.0...v1.27.0)

### Features

* **api:** adding file purposes ([#1401](https://github.com/openai/openai-python/issues/1401)) ([2e9d0bd](https://github.com/openai/openai-python/commit/2e9d0bd0e4bf677ed9b21c6448e804313e026441))

## 1.26.0 (2024-05-06)

Full Changelog: [v1.25.2...v1.26.0](https://github.com/openai/openai-python/compare/v1.25.2...v1.26.0)

### Features

* **api:** add usage metadata when streaming ([#1395](https://github.com/openai/openai-python/issues/1395)) ([3cb064b](https://github.com/openai/openai-python/commit/3cb064b10d661dbcc74b6bc1ed7d8e635ab2876a))

## 1.25.2 (2024-05-05)

Full Changelog: [v1.25.1...v1.25.2](https://github.com/openai/openai-python/compare/v1.25.1...v1.25.2)

### Documentation

* **readme:** fix misleading timeout example value ([#1393](https://github.com/openai/openai-python/issues/1393)) ([3eba8e7](https://github.com/openai/openai-python/commit/3eba8e7573ec1bf4231a304c8eabc8a8d077f46d))

## 1.25.1 (2024-05-02)

Full Changelog: [v1.25.0...v1.25.1](https://github.com/openai/openai-python/compare/v1.25.0...v1.25.1)

### Chores

* **internal:** bump prism version ([#1390](https://github.com/openai/openai-python/issues/1390)) ([a5830fc](https://github.com/openai/openai-python/commit/a5830fc1c5ffd21e2010490905084ad5614212a3))

## 1.25.0 (2024-05-01)

Full Changelog: [v1.24.1...v1.25.0](https://github.com/openai/openai-python/compare/v1.24.1...v1.25.0)

### Features

* **api:** delete messages ([#1388](https://github.com/openai/openai-python/issues/1388)) ([d0597cd](https://github.com/openai/openai-python/commit/d0597cdc1813cddffacbaa50565e86d2420d1873))

## 1.24.1 (2024-04-30)

Full Changelog: [v1.24.0...v1.24.1](https://github.com/openai/openai-python/compare/v1.24.0...v1.24.1)

### Chores

* **internal:** add link to openapi spec ([#1385](https://github.com/openai/openai-python/issues/1385)) ([b315d04](https://github.com/openai/openai-python/commit/b315d04e9624ec3a841d7c51813bb553640c23ce))

## 1.24.0 (2024-04-29)

Full Changelog: [v1.23.6...v1.24.0](https://github.com/openai/openai-python/compare/v1.23.6...v1.24.0)

### Features

* **api:** add required tool_choice ([#1382](https://github.com/openai/openai-python/issues/1382)) ([c558f65](https://github.com/openai/openai-python/commit/c558f651df39f61425cd4109318f78ed94cbf163))


### Chores

* **client:** log response headers in debug mode ([#1383](https://github.com/openai/openai-python/issues/1383)) ([f31a426](https://github.com/openai/openai-python/commit/f31a4261adc4ebd92582cee264e41eb6a6dafc57))
* **internal:** minor reformatting ([#1377](https://github.com/openai/openai-python/issues/1377)) ([7003dbb](https://github.com/openai/openai-python/commit/7003dbb863b6e16381070b8b86ac24aa070a3799))
* **internal:** reformat imports ([#1375](https://github.com/openai/openai-python/issues/1375)) ([2ad0c3b](https://github.com/openai/openai-python/commit/2ad0c3b8e0b746ed20db3c84a9c6a369aa10bf5d))

## 1.23.6 (2024-04-25)

Full Changelog: [v1.23.5...v1.23.6](https://github.com/openai/openai-python/compare/v1.23.5...v1.23.6)

### Chores

* **internal:** update test helper function ([#1371](https://github.com/openai/openai-python/issues/1371)) ([6607c4a](https://github.com/openai/openai-python/commit/6607c4a491fd1912f9222d6fe464ccef6e865eac))

## 1.23.5 (2024-04-24)

Full Changelog: [v1.23.4...v1.23.5](https://github.com/openai/openai-python/compare/v1.23.4...v1.23.5)

### Chores

* **internal:** use actions/checkout@v4 for codeflow ([#1368](https://github.com/openai/openai-python/issues/1368)) ([d1edf8b](https://github.com/openai/openai-python/commit/d1edf8beb806ebaefdcc2cb6e39f99e1811a2668))

## 1.23.4 (2024-04-24)

Full Changelog: [v1.23.3...v1.23.4](https://github.com/openai/openai-python/compare/v1.23.3...v1.23.4)

### Bug Fixes

* **api:** change timestamps to unix integers ([#1367](https://github.com/openai/openai-python/issues/1367)) ([fbc0e15](https://github.com/openai/openai-python/commit/fbc0e15f422971bd15499d4ea5f42a1c885c7004))
* **docs:** doc improvements ([#1364](https://github.com/openai/openai-python/issues/1364)) ([8c3a005](https://github.com/openai/openai-python/commit/8c3a005247ea045b9a95e7459eba2a90067daf71))


### Chores

* **tests:** rename test file ([#1366](https://github.com/openai/openai-python/issues/1366)) ([4204e63](https://github.com/openai/openai-python/commit/4204e63e27584c68ad27825261225603d7a87008))

## 1.23.3 (2024-04-23)

Full Changelog: [v1.23.2...v1.23.3](https://github.com/openai/openai-python/compare/v1.23.2...v1.23.3)

### Chores

* **internal:** restructure imports ([#1359](https://github.com/openai/openai-python/issues/1359)) ([4e5eb37](https://github.com/openai/openai-python/commit/4e5eb374ea0545a6117db657bb05f6417bc62d18))

## 1.23.2 (2024-04-19)

Full Changelog: [v1.23.1...v1.23.2](https://github.com/openai/openai-python/compare/v1.23.1...v1.23.2)

### Bug Fixes

* **api:** correct types for message attachment tools ([#1348](https://github.com/openai/openai-python/issues/1348)) ([78a6261](https://github.com/openai/openai-python/commit/78a6261eaad7839284903287d4f647d9cb4ced0b))

## 1.23.1 (2024-04-18)

Full Changelog: [v1.23.0...v1.23.1](https://github.com/openai/openai-python/compare/v1.23.0...v1.23.1)

### Bug Fixes

* **api:** correct types for attachments ([#1342](https://github.com/openai/openai-python/issues/1342)) ([542d30c](https://github.com/openai/openai-python/commit/542d30c6dad4e139bf3eb443936d42b7b42dad54))

## 1.23.0 (2024-04-18)

Full Changelog: [v1.22.0...v1.23.0](https://github.com/openai/openai-python/compare/v1.22.0...v1.23.0)

### Features

* **api:** add request id property to response classes ([#1341](https://github.com/openai/openai-python/issues/1341)) ([444d680](https://github.com/openai/openai-python/commit/444d680cbb3745adbc27788213ae3312567136a8))


### Documentation

* **helpers:** fix example snippets ([#1339](https://github.com/openai/openai-python/issues/1339)) ([8929088](https://github.com/openai/openai-python/commit/8929088b206a04b4c5b85fb69b0b983fb56f9b03))

## 1.22.0 (2024-04-18)

Full Changelog: [v1.21.2...v1.22.0](https://github.com/openai/openai-python/compare/v1.21.2...v1.22.0)

### Features

* **api:** batch list endpoint ([#1338](https://github.com/openai/openai-python/issues/1338)) ([a776f38](https://github.com/openai/openai-python/commit/a776f387e3159f9a8f4dcaa7d0d3b78c2a884f91))


### Chores

* **internal:** ban usage of lru_cache ([#1331](https://github.com/openai/openai-python/issues/1331)) ([8f9223b](https://github.com/openai/openai-python/commit/8f9223bfe13200c685fc97c25ada3015a69c6df7))
* **internal:** bump pyright to 1.1.359 ([#1337](https://github.com/openai/openai-python/issues/1337)) ([feec0dd](https://github.com/openai/openai-python/commit/feec0dd1dd243941a279c3224c5ca1d727d76676))

## 1.21.2 (2024-04-17)

Full Changelog: [v1.21.1...v1.21.2](https://github.com/openai/openai-python/compare/v1.21.1...v1.21.2)

### Chores

* **internal:** add lru_cache helper function ([#1329](https://github.com/openai/openai-python/issues/1329)) ([cbeebfc](https://github.com/openai/openai-python/commit/cbeebfcca8bf1a3feb4462a79e10099bda5bed84))

## 1.21.1 (2024-04-17)

Full Changelog: [v1.21.0...v1.21.1](https://github.com/openai/openai-python/compare/v1.21.0...v1.21.1)

### Chores

* **api:** docs and response_format response property ([#1327](https://github.com/openai/openai-python/issues/1327)) ([7a6d142](https://github.com/openai/openai-python/commit/7a6d142f013994c4eb9a4f55888464c885f8baf0))

## 1.21.0 (2024-04-17)

Full Changelog: [v1.20.0...v1.21.0](https://github.com/openai/openai-python/compare/v1.20.0...v1.21.0)

### Features

* **api:** add vector stores ([#1325](https://github.com/openai/openai-python/issues/1325)) ([038a3c5](https://github.com/openai/openai-python/commit/038a3c50db7b6a88f54ff1cd1ff6cbaef2caf87f))

## 1.20.0 (2024-04-16)

Full Changelog: [v1.19.0...v1.20.0](https://github.com/openai/openai-python/compare/v1.19.0...v1.20.0)

### Features

* **client:** add header OpenAI-Project ([#1320](https://github.com/openai/openai-python/issues/1320)) ([0c489f1](https://github.com/openai/openai-python/commit/0c489f16a7d9e5ac753da87273b223893edefa69))
* extract chat models to a named enum ([#1322](https://github.com/openai/openai-python/issues/1322)) ([1ccd9b6](https://github.com/openai/openai-python/commit/1ccd9b67322736a4714e58c953d59585322c527d))

## 1.19.0 (2024-04-15)

Full Changelog: [v1.18.0...v1.19.0](https://github.com/openai/openai-python/compare/v1.18.0...v1.19.0)

### Features

* **errors:** add request_id property ([#1317](https://github.com/openai/openai-python/issues/1317)) ([f9eb77d](https://github.com/openai/openai-python/commit/f9eb77dca422b9456f4e3b31c7474046235eec1d))

## 1.18.0 (2024-04-15)

Full Changelog: [v1.17.1...v1.18.0](https://github.com/openai/openai-python/compare/v1.17.1...v1.18.0)

### Features

* **api:** add batch API ([#1316](https://github.com/openai/openai-python/issues/1316)) ([3e6f19e](https://github.com/openai/openai-python/commit/3e6f19e6e7489bf1c94944a5f8f9b1d4535cdc43))
* **api:** updates ([#1314](https://github.com/openai/openai-python/issues/1314)) ([8281dc9](https://github.com/openai/openai-python/commit/8281dc956178f5de345645660081f7d0c15a57a6))

## 1.17.1 (2024-04-12)

Full Changelog: [v1.17.0...v1.17.1](https://github.com/openai/openai-python/compare/v1.17.0...v1.17.1)

### Chores

* fix typo ([#1304](https://github.com/openai/openai-python/issues/1304)) ([1129082](https://github.com/openai/openai-python/commit/1129082955f98d76c0927781ef9e7d0beeda2ec4))
* **internal:** formatting ([#1311](https://github.com/openai/openai-python/issues/1311)) ([8fd411b](https://github.com/openai/openai-python/commit/8fd411b48b6b1eafaab2dac26201525c1ee0b942))

## 1.17.0 (2024-04-10)

Full Changelog: [v1.16.2...v1.17.0](https://github.com/openai/openai-python/compare/v1.16.2...v1.17.0)

### Features

* **api:** add additional messages when creating thread run ([#1298](https://github.com/openai/openai-python/issues/1298)) ([70eb081](https://github.com/openai/openai-python/commit/70eb081804b14cc8c151ebd85458545a50a074fd))
* **client:** add DefaultHttpxClient and DefaultAsyncHttpxClient ([#1302](https://github.com/openai/openai-python/issues/1302)) ([69cdfc3](https://github.com/openai/openai-python/commit/69cdfc319fff7ebf28cdd13cc6c1761b7d97811d))
* **models:** add to_dict & to_json helper methods ([#1305](https://github.com/openai/openai-python/issues/1305)) ([40a881d](https://github.com/openai/openai-python/commit/40a881d10442af8b445ce030f8ab338710e1c4c8))

## 1.16.2 (2024-04-04)

Full Changelog: [v1.16.1...v1.16.2](https://github.com/openai/openai-python/compare/v1.16.1...v1.16.2)

### Bug Fixes

* **client:** correct logic for line decoding in streaming ([#1293](https://github.com/openai/openai-python/issues/1293)) ([687caef](https://github.com/openai/openai-python/commit/687caefa4acf615bf404f16817bfd9a6f285ee5c))

## 1.16.1 (2024-04-02)

Full Changelog: [v1.16.0...v1.16.1](https://github.com/openai/openai-python/compare/v1.16.0...v1.16.1)

### Chores

* **internal:** defer model build for import latency ([#1291](https://github.com/openai/openai-python/issues/1291)) ([bc6866e](https://github.com/openai/openai-python/commit/bc6866eb2335d01532190d0906cad7bf9af28621))

## 1.16.0 (2024-04-01)

Full Changelog: [v1.15.0...v1.16.0](https://github.com/openai/openai-python/compare/v1.15.0...v1.16.0)

### Features

* **api:** add support for filtering messages by run_id ([#1288](https://github.com/openai/openai-python/issues/1288)) ([58d6b77](https://github.com/openai/openai-python/commit/58d6b773218ef1dd8dc6208124a16078e4ac11c1))
* **api:** run polling helpers ([#1289](https://github.com/openai/openai-python/issues/1289)) ([6b427f3](https://github.com/openai/openai-python/commit/6b427f38610847bce3ce5334177f07917bd7c187))


### Chores

* **client:** validate that max_retries is not None ([#1286](https://github.com/openai/openai-python/issues/1286)) ([aa5920a](https://github.com/openai/openai-python/commit/aa5920af6131c49a44352524154ee4a1684e76b2))


### Refactors

* rename createAndStream to stream ([6b427f3](https://github.com/openai/openai-python/commit/6b427f38610847bce3ce5334177f07917bd7c187))

## 1.15.0 (2024-03-31)

Full Changelog: [v1.14.3...v1.15.0](https://github.com/openai/openai-python/compare/v1.14.3...v1.15.0)

### Features

* **api:** adding temperature parameter ([#1282](https://github.com/openai/openai-python/issues/1282)) ([0e68fd3](https://github.com/openai/openai-python/commit/0e68fd3690155785d1fb0ee9a8604f51e6701b1d))
* **client:** increase default HTTP max_connections to 1000 and max_keepalive_connections to 100 ([#1281](https://github.com/openai/openai-python/issues/1281)) ([340d139](https://github.com/openai/openai-python/commit/340d1391e3071a265ed12c0a8d70d4d73a860bd8))
* **package:** export default constants ([#1275](https://github.com/openai/openai-python/issues/1275)) ([fdc126e](https://github.com/openai/openai-python/commit/fdc126e428320f1bed5eabd3eed229f08ab9effa))


### Bug Fixes

* **project:** use absolute github links on PyPi ([#1280](https://github.com/openai/openai-python/issues/1280)) ([94cd528](https://github.com/openai/openai-python/commit/94cd52837650e5b7e115119d69e6b1c7ba1f6bf1))


### Chores

* **internal:** bump dependencies ([#1273](https://github.com/openai/openai-python/issues/1273)) ([18dcd65](https://github.com/openai/openai-python/commit/18dcd654d9f54628b5fe21a499d1fef500e15f7f))


### Documentation

* **readme:** change undocumented params wording ([#1284](https://github.com/openai/openai-python/issues/1284)) ([7498ef1](https://github.com/openai/openai-python/commit/7498ef1e9568200086ba3efb99ea100feb05e3f0))

## 1.14.3 (2024-03-25)

Full Changelog: [v1.14.2...v1.14.3](https://github.com/openai/openai-python/compare/v1.14.2...v1.14.3)

### Bug Fixes

* revert regression with 3.7 support ([#1269](https://github.com/openai/openai-python/issues/1269)) ([37aed56](https://github.com/openai/openai-python/commit/37aed564143dc7281f1eaa6ab64ec5ca334cf25e))


### Chores

* **internal:** construct error properties instead of using the raw response ([#1257](https://github.com/openai/openai-python/issues/1257)) ([11dce5c](https://github.com/openai/openai-python/commit/11dce5c66395722b245f5d5461ce379ca7b939e4))
* **internal:** formatting change ([#1258](https://github.com/openai/openai-python/issues/1258)) ([b907dd7](https://github.com/openai/openai-python/commit/b907dd7dcae895e4209559da061d0991a8d640a6))
* **internal:** loosen input type for util function ([#1250](https://github.com/openai/openai-python/issues/1250)) ([fc8b4c3](https://github.com/openai/openai-python/commit/fc8b4c37dc91dfcc0535c19236092992171784a0))


### Documentation

* **contributing:** fix typo ([#1264](https://github.com/openai/openai-python/issues/1264)) ([835cb9b](https://github.com/openai/openai-python/commit/835cb9b2f92e2aa3329545b4677865dcd4fd00f0))
* **readme:** consistent use of sentence case in headings ([#1255](https://github.com/openai/openai-python/issues/1255)) ([519f371](https://github.com/openai/openai-python/commit/519f371af779b5fa353292ff5a2d3332afe0987e))
* **readme:** document how to make undocumented requests ([#1256](https://github.com/openai/openai-python/issues/1256)) ([5887858](https://github.com/openai/openai-python/commit/5887858a7b649dfde5b733ef01e5cffcf953b2a7))

## 1.14.2 (2024-03-19)

Full Changelog: [v1.14.1...v1.14.2](https://github.com/openai/openai-python/compare/v1.14.1...v1.14.2)

### Performance Improvements

* cache TypeAdapters ([#1114](https://github.com/openai/openai-python/issues/1114)) ([41b6fee](https://github.com/openai/openai-python/commit/41b6feec70d3f203e36ba9a92205389bafce930c))
* cache TypeAdapters ([#1243](https://github.com/openai/openai-python/issues/1243)) ([2005076](https://github.com/openai/openai-python/commit/2005076f500bef6e0a6cc8f935b9cc9fef65ab5b))


### Chores

* **internal:** update generated pragma comment ([#1247](https://github.com/openai/openai-python/issues/1247)) ([3eeb9b3](https://github.com/openai/openai-python/commit/3eeb9b3a71e01c2593be443a97a353371466d01a))


### Documentation

* assistant improvements ([#1249](https://github.com/openai/openai-python/issues/1249)) ([e7a3176](https://github.com/openai/openai-python/commit/e7a3176b7606822bd5ad8f7fece87de6aad1e5b6))
* fix typo in CONTRIBUTING.md ([#1245](https://github.com/openai/openai-python/issues/1245)) ([adef57a](https://github.com/openai/openai-python/commit/adef57ae5c71734873ba49bccd92fa7f28068d28))

## 1.14.1 (2024-03-15)

Full Changelog: [v1.14.0...v1.14.1](https://github.com/openai/openai-python/compare/v1.14.0...v1.14.1)

### Documentation

* **readme:** assistant streaming ([#1238](https://github.com/openai/openai-python/issues/1238)) ([0fc30a2](https://github.com/openai/openai-python/commit/0fc30a23030b4ff60f27cd2f472517926ed0f300))

## 1.14.0 (2024-03-13)

Full Changelog: [v1.13.4...v1.14.0](https://github.com/openai/openai-python/compare/v1.13.4...v1.14.0)

### Features

* **assistants:** add support for streaming ([#1233](https://github.com/openai/openai-python/issues/1233)) ([17635dc](https://github.com/openai/openai-python/commit/17635dccbeddf153f8201dbca18b44e16a1799b2))

## 1.13.4 (2024-03-13)

Full Changelog: [v1.13.3...v1.13.4](https://github.com/openai/openai-python/compare/v1.13.3...v1.13.4)

### Bug Fixes

* **streaming:** improve error messages ([#1218](https://github.com/openai/openai-python/issues/1218)) ([4f5ff29](https://github.com/openai/openai-python/commit/4f5ff298601b5a8bfbf0a9d0c0d1329d1502a205))


### Chores

* **api:** update docs ([#1212](https://github.com/openai/openai-python/issues/1212)) ([71236e0](https://github.com/openai/openai-python/commit/71236e0de4012a249af4c1ffd95973a8ba4fa61f))
* **client:** improve error message for invalid http_client argument ([#1216](https://github.com/openai/openai-python/issues/1216)) ([d0c928a](https://github.com/openai/openai-python/commit/d0c928abbd99020fe828350f3adfd10c638a2eed))
* **docs:** mention install from git repo ([#1203](https://github.com/openai/openai-python/issues/1203)) ([3ab6f44](https://github.com/openai/openai-python/commit/3ab6f447ffd8d2394e58416e401e545a99ec85af))
* export NOT_GIVEN sentinel value ([#1223](https://github.com/openai/openai-python/issues/1223)) ([8a4f76f](https://github.com/openai/openai-python/commit/8a4f76f992c66f20cd6aa070c8dc4839e4cf9f3c))
* **internal:** add core support for deserializing into number response ([#1219](https://github.com/openai/openai-python/issues/1219)) ([004bc92](https://github.com/openai/openai-python/commit/004bc924ea579852b9266ca11aea93463cf75104))
* **internal:** bump pyright ([#1221](https://github.com/openai/openai-python/issues/1221)) ([3c2e815](https://github.com/openai/openai-python/commit/3c2e815311ace4ff81ccd446b23ff50a4e099485))
* **internal:** improve deserialisation of discriminated unions ([#1227](https://github.com/openai/openai-python/issues/1227)) ([4767259](https://github.com/openai/openai-python/commit/4767259d25ac135550b37b15e4c0497e5ff0330d))
* **internal:** minor core client restructuring ([#1199](https://github.com/openai/openai-python/issues/1199)) ([4314cdc](https://github.com/openai/openai-python/commit/4314cdcd522537e6cbbd87206d5bb236f672ce05))
* **internal:** split up transforms into sync / async ([#1210](https://github.com/openai/openai-python/issues/1210)) ([7853a83](https://github.com/openai/openai-python/commit/7853a8358864957cc183581bdf7c03810a7b2756))
* **internal:** support more input types ([#1211](https://github.com/openai/openai-python/issues/1211)) ([d0e4baa](https://github.com/openai/openai-python/commit/d0e4baa40d32c2da0ce5ceef8e0c7193b98f2b5a))
* **internal:** support parsing Annotated types ([#1222](https://github.com/openai/openai-python/issues/1222)) ([8598f81](https://github.com/openai/openai-python/commit/8598f81841eeab0ab00eb21fdec7e8756ffde909))
* **types:** include discriminators in unions ([#1228](https://github.com/openai/openai-python/issues/1228)) ([3ba0dcc](https://github.com/openai/openai-python/commit/3ba0dcc19a2af0ef869c77da2805278f71ee96c2))


### Documentation

* **contributing:** improve wording ([#1201](https://github.com/openai/openai-python/issues/1201)) ([95a1e0e](https://github.com/openai/openai-python/commit/95a1e0ea8e5446c413606847ebf9e35afbc62bf9))

## 1.13.3 (2024-02-28)

Full Changelog: [v1.13.2...v1.13.3](https://github.com/openai/openai-python/compare/v1.13.2...v1.13.3)

### Features

* **api:** add wav and pcm to response_format ([#1189](https://github.com/openai/openai-python/issues/1189)) ([dbd20fc](https://github.com/openai/openai-python/commit/dbd20fc42e93358261f71b9aa0e5f955053c3825))


### Chores

* **client:** use anyio.sleep instead of asyncio.sleep ([#1198](https://github.com/openai/openai-python/issues/1198)) ([b6d025b](https://github.com/openai/openai-python/commit/b6d025b54f091e79f5d4a0a8923f29574fd66027))
* **internal:** bump pyright ([#1193](https://github.com/openai/openai-python/issues/1193)) ([9202e04](https://github.com/openai/openai-python/commit/9202e04d07a7c47232f39196346c734869b8f55a))
* **types:** extract run status to a named type ([#1178](https://github.com/openai/openai-python/issues/1178)) ([249ecbd](https://github.com/openai/openai-python/commit/249ecbdeb6566a385ec46dfd5000b4eaa03965f0))


### Documentation

* add note in azure_deployment docstring ([#1188](https://github.com/openai/openai-python/issues/1188)) ([96fa995](https://github.com/openai/openai-python/commit/96fa99572dd76ee708f2bae04d11b659cdd698b2))
* **examples:** add pyaudio streaming example ([#1194](https://github.com/openai/openai-python/issues/1194)) ([3683c5e](https://github.com/openai/openai-python/commit/3683c5e3c7f07e4b789a0c4cc417b2c59539cae2))

## 1.13.2 (2024-02-20)

Full Changelog: [v1.13.1...v1.13.2](https://github.com/openai/openai-python/compare/v1.13.1...v1.13.2)

### Bug Fixes

* **ci:** revert "move github release logic to github app" ([#1170](https://github.com/openai/openai-python/issues/1170)) ([f1adc2e](https://github.com/openai/openai-python/commit/f1adc2e6f2f29acb4404e84137a9d3109714c585))

## 1.13.1 (2024-02-20)

Full Changelog: [v1.13.0...v1.13.1](https://github.com/openai/openai-python/compare/v1.13.0...v1.13.1)

### Chores

* **internal:** bump rye to v0.24.0 ([#1168](https://github.com/openai/openai-python/issues/1168)) ([84c4256](https://github.com/openai/openai-python/commit/84c4256316f2a79068ecadb852e5e69b6b104a1f))

## 1.13.0 (2024-02-19)

Full Changelog: [v1.12.0...v1.13.0](https://github.com/openai/openai-python/compare/v1.12.0...v1.13.0)

### Features

* **api:** updates ([#1146](https://github.com/openai/openai-python/issues/1146)) ([79b7675](https://github.com/openai/openai-python/commit/79b7675e51fb7d269a6ea281a568bc7812ba2ace))


### Bug Fixes

* **api:** remove non-GA instance_id param ([#1164](https://github.com/openai/openai-python/issues/1164)) ([1abe139](https://github.com/openai/openai-python/commit/1abe139b1a5f5cc41263738fc12856056dce5697))


### Chores

* **ci:** move github release logic to github app ([#1155](https://github.com/openai/openai-python/issues/1155)) ([67cfac2](https://github.com/openai/openai-python/commit/67cfac2564dfb718da0465e34b90ac6928fa962a))
* **client:** use correct accept headers for binary data ([#1161](https://github.com/openai/openai-python/issues/1161)) ([e536437](https://github.com/openai/openai-python/commit/e536437ae0b2cb0ddf2d74618722005d37403f32))
* **internal:** refactor release environment script ([#1158](https://github.com/openai/openai-python/issues/1158)) ([7fe8ec3](https://github.com/openai/openai-python/commit/7fe8ec3bf04ecf85e3bd5adf0d9992c051f87b81))

## 1.12.0 (2024-02-08)

Full Changelog: [v1.11.1...v1.12.0](https://github.com/openai/openai-python/compare/v1.11.1...v1.12.0)

### Features

* **api:** add `timestamp_granularities`, add `gpt-3.5-turbo-0125` model ([#1125](https://github.com/openai/openai-python/issues/1125)) ([1ecf8f6](https://github.com/openai/openai-python/commit/1ecf8f6b12323ed09fb6a2815c85b9533ee52a50))
* **cli/images:** add support for `--model` arg ([#1132](https://github.com/openai/openai-python/issues/1132)) ([0d53866](https://github.com/openai/openai-python/commit/0d5386615cda7cd50d5db90de2119b84dba29519))


### Bug Fixes

* remove double brackets from timestamp_granularities param ([#1140](https://github.com/openai/openai-python/issues/1140)) ([3db0222](https://github.com/openai/openai-python/commit/3db022216a81fa86470b53ec1246669bc7b17897))
* **types:** loosen most List params types to Iterable ([#1129](https://github.com/openai/openai-python/issues/1129)) ([bdb31a3](https://github.com/openai/openai-python/commit/bdb31a3b1db6ede4e02b3c951c4fd23f70260038))


### Chores

* **internal:** add lint command ([#1128](https://github.com/openai/openai-python/issues/1128)) ([4c021c0](https://github.com/openai/openai-python/commit/4c021c0ab0151c2ec092d860c9b60e22e658cd03))
* **internal:** support serialising iterable types ([#1127](https://github.com/openai/openai-python/issues/1127)) ([98d4e59](https://github.com/openai/openai-python/commit/98d4e59afcf2d65d4e660d91eb9462240ef5cd63))


### Documentation

* add CONTRIBUTING.md ([#1138](https://github.com/openai/openai-python/issues/1138)) ([79c8f0e](https://github.com/openai/openai-python/commit/79c8f0e8bf5470e2e31e781e8d279331e89ddfbe))

## 1.11.1 (2024-02-04)

Full Changelog: [v1.11.0...v1.11.1](https://github.com/openai/openai-python/compare/v1.11.0...v1.11.1)

### Bug Fixes

* prevent crash when platform.architecture() is not allowed ([#1120](https://github.com/openai/openai-python/issues/1120)) ([9490554](https://github.com/openai/openai-python/commit/949055488488e93597cbc6c2cdd81f14f203e53b))

## 1.11.0 (2024-02-03)

Full Changelog: [v1.10.0...v1.11.0](https://github.com/openai/openai-python/compare/v1.10.0...v1.11.0)

### Features

* **client:** support parsing custom response types ([#1111](https://github.com/openai/openai-python/issues/1111)) ([da00fc3](https://github.com/openai/openai-python/commit/da00fc3f8e0ff13c6c3ca970e4bb86846304bd06))


### Chores

* **interal:** make link to api.md relative ([#1117](https://github.com/openai/openai-python/issues/1117)) ([4a10879](https://github.com/openai/openai-python/commit/4a108797e46293357601ce933e21b557a5dc6954))
* **internal:** cast type in mocked test ([#1112](https://github.com/openai/openai-python/issues/1112)) ([99b21e1](https://github.com/openai/openai-python/commit/99b21e1fc681eb10e01d479cc043ad3c89272b1c))
* **internal:** enable ruff type checking misuse lint rule ([#1106](https://github.com/openai/openai-python/issues/1106)) ([fa63e60](https://github.com/openai/openai-python/commit/fa63e605c82ec78f4fc27469c434b421a08fb909))
* **internal:** support multipart data with overlapping keys ([#1104](https://github.com/openai/openai-python/issues/1104)) ([455bc9f](https://github.com/openai/openai-python/commit/455bc9f1fd018a32cd604eb4b400e05aa8d71822))
* **internal:** support pre-release versioning ([#1113](https://github.com/openai/openai-python/issues/1113)) ([dea5b08](https://github.com/openai/openai-python/commit/dea5b08c28d47b331fd44f6920cf9fe322b68e51))

## 1.10.0 (2024-01-25)

Full Changelog: [v1.9.0...v1.10.0](https://github.com/openai/openai-python/compare/v1.9.0...v1.10.0)

### Features

* **api:** add text embeddings dimensions param ([#1103](https://github.com/openai/openai-python/issues/1103)) ([94abfa0](https://github.com/openai/openai-python/commit/94abfa0f988c199ea95a9c870c4ae9808823186d))
* **azure:** proactively add audio/speech to deployment endpoints ([#1099](https://github.com/openai/openai-python/issues/1099)) ([fdf8742](https://github.com/openai/openai-python/commit/fdf87429b45ceb47ae6fd068ab70cc07bcb8da44))
* **client:** enable follow redirects by default ([#1100](https://github.com/openai/openai-python/issues/1100)) ([d325b7c](https://github.com/openai/openai-python/commit/d325b7ca594c2abaada536249b5633b106943333))


### Chores

* **internal:** add internal helpers ([#1092](https://github.com/openai/openai-python/issues/1092)) ([629bde5](https://github.com/openai/openai-python/commit/629bde5800d84735e22d924db23109a141f48644))


### Refactors

* remove unnecessary builtin import ([#1094](https://github.com/openai/openai-python/issues/1094)) ([504b7d4](https://github.com/openai/openai-python/commit/504b7d4a0b4715bd49a1a076a8d4868e51fb3351))

## 1.9.0 (2024-01-21)

Full Changelog: [v1.8.0...v1.9.0](https://github.com/openai/openai-python/compare/v1.8.0...v1.9.0)

### Features

* **api:** add usage to runs and run steps ([#1090](https://github.com/openai/openai-python/issues/1090)) ([6c116df](https://github.com/openai/openai-python/commit/6c116dfbb0065d15050450df70e0e98fc8c80349))


### Chores

* **internal:** fix typing util function ([#1083](https://github.com/openai/openai-python/issues/1083)) ([3e60db6](https://github.com/openai/openai-python/commit/3e60db69f5d9187c4eb38451967259f534a36a82))
* **internal:** remove redundant client test ([#1085](https://github.com/openai/openai-python/issues/1085)) ([947974f](https://github.com/openai/openai-python/commit/947974f5af726e252b7b12c863743e50f41b79d3))
* **internal:** share client instances between all tests ([#1088](https://github.com/openai/openai-python/issues/1088)) ([05cd753](https://github.com/openai/openai-python/commit/05cd7531d40774d05c52b14dee54d137ac1452a3))
* **internal:** speculative retry-after-ms support ([#1086](https://github.com/openai/openai-python/issues/1086)) ([36a7576](https://github.com/openai/openai-python/commit/36a7576a913be8509a3cf6f262543083b485136e))
* lazy load raw resource class properties ([#1087](https://github.com/openai/openai-python/issues/1087)) ([d307127](https://github.com/openai/openai-python/commit/d30712744be07461e86763705c03c3495eadfc35))

## 1.8.0 (2024-01-16)

Full Changelog: [v1.7.2...v1.8.0](https://github.com/openai/openai-python/compare/v1.7.2...v1.8.0)

### Features

* **client:** add support for streaming raw responses ([#1072](https://github.com/openai/openai-python/issues/1072)) ([0e93c3b](https://github.com/openai/openai-python/commit/0e93c3b5bc9cfa041e91962fd82c0d9358125024))


### Bug Fixes

* **client:** ensure path params are non-empty ([#1075](https://github.com/openai/openai-python/issues/1075)) ([9a25149](https://github.com/openai/openai-python/commit/9a2514997c2ddccbec9df8be3773e83271f1dab8))
* **proxy:** prevent recursion errors when debugging pycharm ([#1076](https://github.com/openai/openai-python/issues/1076)) ([3d78798](https://github.com/openai/openai-python/commit/3d787987cf7625b5b502cb0b63a37d55956eaf1d))


### Chores

* add write_to_file binary helper method ([#1077](https://github.com/openai/openai-python/issues/1077)) ([c622c6a](https://github.com/openai/openai-python/commit/c622c6aaf2ae7dc62bd6cdfc053204c5dc3293ac))

## 1.7.2 (2024-01-12)

Full Changelog: [v1.7.1...v1.7.2](https://github.com/openai/openai-python/compare/v1.7.1...v1.7.2)

### Documentation

* **readme:** improve api reference ([#1065](https://github.com/openai/openai-python/issues/1065)) ([745b9e0](https://github.com/openai/openai-python/commit/745b9e08ae0abb8bf4cd87ed40fa450d9ad81ede))


### Refactors

* **api:** remove deprecated endpoints ([#1067](https://github.com/openai/openai-python/issues/1067)) ([199ddcd](https://github.com/openai/openai-python/commit/199ddcdca00c136e4e0c3ff16521eff22acf2a1a))

## 1.7.1 (2024-01-10)

Full Changelog: [v1.7.0...v1.7.1](https://github.com/openai/openai-python/compare/v1.7.0...v1.7.1)

### Chores

* **client:** improve debug logging for failed requests ([#1060](https://github.com/openai/openai-python/issues/1060)) ([cf9a651](https://github.com/openai/openai-python/commit/cf9a6517b4aa0f24bcbe143c54ea908d43dfda92))

## 1.7.0 (2024-01-08)

Full Changelog: [v1.6.1...v1.7.0](https://github.com/openai/openai-python/compare/v1.6.1...v1.7.0)

### Features

* add `None` default value to nullable response properties ([#1043](https://github.com/openai/openai-python/issues/1043)) ([d94b4d3](https://github.com/openai/openai-python/commit/d94b4d3d0adcd1a49a1c25cc9730cef013a3e9c9))


### Bug Fixes

* **client:** correctly use custom http client auth ([#1028](https://github.com/openai/openai-python/issues/1028)) ([3d7d93e](https://github.com/openai/openai-python/commit/3d7d93e951eb7fe09cd9d94d10a62a020398c7f9))


### Chores

* add .keep files for examples and custom code directories ([#1057](https://github.com/openai/openai-python/issues/1057)) ([7524097](https://github.com/openai/openai-python/commit/7524097a47af0fdc8b560186ef3b111b59430741))
* **internal:** bump license ([#1037](https://github.com/openai/openai-python/issues/1037)) ([d828527](https://github.com/openai/openai-python/commit/d828527540ebd97679075f48744818f06311b0cb))
* **internal:** loosen type var restrictions ([#1049](https://github.com/openai/openai-python/issues/1049)) ([e00876b](https://github.com/openai/openai-python/commit/e00876b20b93038450eb317899d8775c7661b8eb))
* **internal:** replace isort with ruff ([#1042](https://github.com/openai/openai-python/issues/1042)) ([f1fbc9c](https://github.com/openai/openai-python/commit/f1fbc9c0d62e7d89ab32c8bdfa39cd94b560690b))
* **internal:** update formatting ([#1041](https://github.com/openai/openai-python/issues/1041)) ([2e9ecee](https://github.com/openai/openai-python/commit/2e9ecee9bdfa8ec33b1b1527d5187483b700fad3))
* **src:** fix typos ([#988](https://github.com/openai/openai-python/issues/988)) ([6a8b806](https://github.com/openai/openai-python/commit/6a8b80624636f9a0e5ada151b2509710a6f74808))
* use property declarations for resource members ([#1047](https://github.com/openai/openai-python/issues/1047)) ([131f6bc](https://github.com/openai/openai-python/commit/131f6bc6b0ccf79119096057079e10906b3d4678))


### Documentation

* fix docstring typos ([#1022](https://github.com/openai/openai-python/issues/1022)) ([ad3fd2c](https://github.com/openai/openai-python/commit/ad3fd2cd19bf91f94473e368554dff39a8f9ad16))
* improve audio example to show how to stream to a file ([#1017](https://github.com/openai/openai-python/issues/1017)) ([d45ed7f](https://github.com/openai/openai-python/commit/d45ed7f0513b167555ae875f1877fa205c5790d2))

## 1.6.1 (2023-12-22)

Full Changelog: [v1.6.0...v1.6.1](https://github.com/openai/openai-python/compare/v1.6.0...v1.6.1)

### Chores

* **internal:** add bin script ([#1001](https://github.com/openai/openai-python/issues/1001)) ([99ffbda](https://github.com/openai/openai-python/commit/99ffbda279bf4c159511fb96b1d5bb688af25437))
* **internal:** use ruff instead of black for formatting ([#1008](https://github.com/openai/openai-python/issues/1008)) ([ceaf9a0](https://github.com/openai/openai-python/commit/ceaf9a06fbd1a846756bb72cce50a69c8cc20bd3))

## 1.6.0 (2023-12-19)

Full Changelog: [v1.5.0...v1.6.0](https://github.com/openai/openai-python/compare/v1.5.0...v1.6.0)

### Features

* **api:** add additional instructions for runs ([#995](https://github.com/openai/openai-python/issues/995)) ([7bf9b75](https://github.com/openai/openai-python/commit/7bf9b75067905449e83e828c12eb384022cff6ca))


### Chores

* **cli:** fix typo in completions ([#985](https://github.com/openai/openai-python/issues/985)) ([d1e9e8f](https://github.com/openai/openai-python/commit/d1e9e8f24df366bb7b796c55a98247c025d229f5))
* **cli:** fix typo in completions ([#986](https://github.com/openai/openai-python/issues/986)) ([626bc34](https://github.com/openai/openai-python/commit/626bc34d82a7057bac99f8b556f9e5f60c261ee7))
* **internal:** fix binary response tests ([#983](https://github.com/openai/openai-python/issues/983)) ([cfb7e30](https://github.com/openai/openai-python/commit/cfb7e308393f2e912e959dd10d68096dd5b3ab9c))
* **internal:** fix typos ([#993](https://github.com/openai/openai-python/issues/993)) ([3b338a4](https://github.com/openai/openai-python/commit/3b338a401b206618774291ff8137deb0cc5f6b4c))
* **internal:** minor utils restructuring ([#992](https://github.com/openai/openai-python/issues/992)) ([5ba576a](https://github.com/openai/openai-python/commit/5ba576ae38d2c4c4d32a21933e0d68e0bc2f0d49))
* **package:** bump minimum typing-extensions to 4.7 ([#994](https://github.com/openai/openai-python/issues/994)) ([0c2da84](https://github.com/openai/openai-python/commit/0c2da84badf416f8b2213983f68bd2b6f9e52f2b))
* **streaming:** update constructor to use direct client names ([#991](https://github.com/openai/openai-python/issues/991)) ([6c3427d](https://github.com/openai/openai-python/commit/6c3427dac8c414658516aeb4caf5d5fd8b11097b))


### Documentation

* upgrade models in examples to latest version ([#989](https://github.com/openai/openai-python/issues/989)) ([cedd574](https://github.com/openai/openai-python/commit/cedd574e5611f3e71e92b523a72ba87bcfe546f1))

## 1.5.0 (2023-12-17)

Full Changelog: [v1.4.0...v1.5.0](https://github.com/openai/openai-python/compare/v1.4.0...v1.5.0)

### Features

* **api:** add token logprobs to chat completions ([#980](https://github.com/openai/openai-python/issues/980)) ([f50e962](https://github.com/openai/openai-python/commit/f50e962b930bd682a4299143b2995337e8571273))


### Chores

* **ci:** run release workflow once per day ([#978](https://github.com/openai/openai-python/issues/978)) ([215476a](https://github.com/openai/openai-python/commit/215476a0b99e0c92ab3e44ddd25de207af32d160))

## 1.4.0 (2023-12-15)

Full Changelog: [v1.3.9...v1.4.0](https://github.com/openai/openai-python/compare/v1.3.9...v1.4.0)

### Features

* **api:** add optional `name` argument + improve docs ([#972](https://github.com/openai/openai-python/issues/972)) ([7972010](https://github.com/openai/openai-python/commit/7972010615820099f662c02821cfbd59e7d6ea44))

## 1.3.9 (2023-12-12)

Full Changelog: [v1.3.8...v1.3.9](https://github.com/openai/openai-python/compare/v1.3.8...v1.3.9)

### Documentation

* improve README timeout comment ([#964](https://github.com/openai/openai-python/issues/964)) ([3c3ed5e](https://github.com/openai/openai-python/commit/3c3ed5edd938a9333e8d2fa47cb4b44178eef89a))
* small Improvement in the async chat response code ([#959](https://github.com/openai/openai-python/issues/959)) ([fb9d0a3](https://github.com/openai/openai-python/commit/fb9d0a358fa232043d9d5c149b6a888d50127c7b))
* small streaming readme improvements ([#962](https://github.com/openai/openai-python/issues/962)) ([f3be2e5](https://github.com/openai/openai-python/commit/f3be2e5cc24988471e6cedb3e34bdfd3123edc63))


### Refactors

* **client:** simplify cleanup ([#966](https://github.com/openai/openai-python/issues/966)) ([5c138f4](https://github.com/openai/openai-python/commit/5c138f4a7947e5b4aae8779fae78ca51269b355a))
* simplify internal error handling ([#968](https://github.com/openai/openai-python/issues/968)) ([d187f6b](https://github.com/openai/openai-python/commit/d187f6b6e4e646cca39c6ca35c618aa5c1bfbd61))

## 1.3.8 (2023-12-08)

Full Changelog: [v1.3.7...v1.3.8](https://github.com/openai/openai-python/compare/v1.3.7...v1.3.8)

### Bug Fixes

* avoid leaking memory when Client.with_options is used ([#956](https://github.com/openai/openai-python/issues/956)) ([e37ecca](https://github.com/openai/openai-python/commit/e37ecca04040ce946822a7e40f5604532a59ee85))
* **errors:** properly assign APIError.body ([#949](https://github.com/openai/openai-python/issues/949)) ([c70e194](https://github.com/openai/openai-python/commit/c70e194f0a253409ec851607ae5219e3b5a8c442))
* **pagination:** use correct type hint for .object ([#943](https://github.com/openai/openai-python/issues/943)) ([23fe7ee](https://github.com/openai/openai-python/commit/23fe7ee48a71539b0d1e95ceff349264aae4090e))


### Chores

* **internal:** enable more lint rules ([#945](https://github.com/openai/openai-python/issues/945)) ([2c8add6](https://github.com/openai/openai-python/commit/2c8add64a261dea731bd162bb0cca222518d5440))
* **internal:** reformat imports ([#939](https://github.com/openai/openai-python/issues/939)) ([ec65124](https://github.com/openai/openai-python/commit/ec651249de2f4e4cf959f816e1b52f03d3b1017a))
* **internal:** reformat imports ([#944](https://github.com/openai/openai-python/issues/944)) ([5290639](https://github.com/openai/openai-python/commit/52906391c9b6633656ec7934e6bbac553ec667cd))
* **internal:** update formatting ([#941](https://github.com/openai/openai-python/issues/941)) ([8e5a156](https://github.com/openai/openai-python/commit/8e5a156d555fe68731ba0604a7455cc03cb451ce))
* **package:** lift anyio v4 restriction ([#927](https://github.com/openai/openai-python/issues/927)) ([be0438a](https://github.com/openai/openai-python/commit/be0438a2e399bb0e0a94907229d02fc61ab479c0))


### Documentation

* fix typo in example ([#950](https://github.com/openai/openai-python/issues/950)) ([54f0ce0](https://github.com/openai/openai-python/commit/54f0ce0000abe32e97ae400f2975c028b8a84273))

## 1.3.7 (2023-12-01)
Download .txt
gitextract_npo499yb/

├── .devcontainer/
│   ├── Dockerfile
│   └── devcontainer.json
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── ci.yml
│       ├── create-releases.yml
│       ├── detect-breaking-changes.yml
│       ├── publish-pypi.yml
│       └── release-doctor.yml
├── .gitignore
├── .inline-snapshot/
│   └── external/
│       └── .gitignore
├── .python-version
├── .release-please-manifest.json
├── .stats.yml
├── .vscode/
│   └── settings.json
├── Brewfile
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── api.md
├── bin/
│   ├── check-release-environment
│   └── publish-pypi
├── examples/
│   ├── .keep
│   ├── async_demo.py
│   ├── audio.py
│   ├── azure.py
│   ├── azure_ad.py
│   ├── demo.py
│   ├── generate_file.sh
│   ├── image_stream.py
│   ├── module_client.py
│   ├── parsing.py
│   ├── parsing_stream.py
│   ├── parsing_tools.py
│   ├── parsing_tools_stream.py
│   ├── picture.py
│   ├── realtime/
│   │   ├── audio_util.py
│   │   ├── azure_realtime.py
│   │   ├── push_to_talk_app.py
│   │   └── realtime.py
│   ├── responses/
│   │   ├── __init__.py
│   │   ├── background.py
│   │   ├── background_async.py
│   │   ├── background_streaming.py
│   │   ├── background_streaming_async.py
│   │   ├── streaming.py
│   │   ├── streaming_tools.py
│   │   ├── structured_outputs.py
│   │   ├── structured_outputs_tools.py
│   │   └── websocket.py
│   ├── responses_input_tokens.py
│   ├── speech_to_text.py
│   ├── streaming.py
│   ├── text_to_speech.py
│   ├── uploads.py
│   └── video.py
├── helpers.md
├── noxfile.py
├── pyproject.toml
├── release-please-config.json
├── scripts/
│   ├── bootstrap
│   ├── detect-breaking-changes
│   ├── detect-breaking-changes.py
│   ├── format
│   ├── lint
│   ├── mock
│   ├── pyrightconfig.breaking-changes.json
│   ├── run-pyright
│   ├── test
│   └── utils/
│       ├── ruffen-docs.py
│       └── upload-artifact.sh
├── src/
│   └── openai/
│       ├── __init__.py
│       ├── __main__.py
│       ├── _base_client.py
│       ├── _client.py
│       ├── _compat.py
│       ├── _constants.py
│       ├── _exceptions.py
│       ├── _extras/
│       │   ├── __init__.py
│       │   ├── _common.py
│       │   ├── numpy_proxy.py
│       │   ├── pandas_proxy.py
│       │   └── sounddevice_proxy.py
│       ├── _files.py
│       ├── _legacy_response.py
│       ├── _models.py
│       ├── _module_client.py
│       ├── _qs.py
│       ├── _resource.py
│       ├── _response.py
│       ├── _streaming.py
│       ├── _types.py
│       ├── _utils/
│       │   ├── __init__.py
│       │   ├── _compat.py
│       │   ├── _datetime_parse.py
│       │   ├── _json.py
│       │   ├── _logs.py
│       │   ├── _proxy.py
│       │   ├── _reflection.py
│       │   ├── _resources_proxy.py
│       │   ├── _streams.py
│       │   ├── _sync.py
│       │   ├── _transform.py
│       │   ├── _typing.py
│       │   └── _utils.py
│       ├── _version.py
│       ├── cli/
│       │   ├── __init__.py
│       │   ├── _api/
│       │   │   ├── __init__.py
│       │   │   ├── _main.py
│       │   │   ├── audio.py
│       │   │   ├── chat/
│       │   │   │   ├── __init__.py
│       │   │   │   └── completions.py
│       │   │   ├── completions.py
│       │   │   ├── files.py
│       │   │   ├── fine_tuning/
│       │   │   │   ├── __init__.py
│       │   │   │   └── jobs.py
│       │   │   ├── image.py
│       │   │   └── models.py
│       │   ├── _cli.py
│       │   ├── _errors.py
│       │   ├── _models.py
│       │   ├── _progress.py
│       │   ├── _tools/
│       │   │   ├── __init__.py
│       │   │   ├── _main.py
│       │   │   ├── fine_tunes.py
│       │   │   └── migrate.py
│       │   └── _utils.py
│       ├── helpers/
│       │   ├── __init__.py
│       │   ├── local_audio_player.py
│       │   └── microphone.py
│       ├── lib/
│       │   ├── .keep
│       │   ├── __init__.py
│       │   ├── _old_api.py
│       │   ├── _parsing/
│       │   │   ├── __init__.py
│       │   │   ├── _completions.py
│       │   │   └── _responses.py
│       │   ├── _pydantic.py
│       │   ├── _realtime.py
│       │   ├── _tools.py
│       │   ├── _validators.py
│       │   ├── azure.py
│       │   └── streaming/
│       │       ├── __init__.py
│       │       ├── _assistants.py
│       │       ├── _deltas.py
│       │       ├── chat/
│       │       │   ├── __init__.py
│       │       │   ├── _completions.py
│       │       │   ├── _events.py
│       │       │   └── _types.py
│       │       └── responses/
│       │           ├── __init__.py
│       │           ├── _events.py
│       │           ├── _responses.py
│       │           └── _types.py
│       ├── pagination.py
│       ├── py.typed
│       ├── resources/
│       │   ├── __init__.py
│       │   ├── audio/
│       │   │   ├── __init__.py
│       │   │   ├── audio.py
│       │   │   ├── speech.py
│       │   │   ├── transcriptions.py
│       │   │   └── translations.py
│       │   ├── batches.py
│       │   ├── beta/
│       │   │   ├── __init__.py
│       │   │   ├── assistants.py
│       │   │   ├── beta.py
│       │   │   ├── chatkit/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── chatkit.py
│       │   │   │   ├── sessions.py
│       │   │   │   └── threads.py
│       │   │   ├── realtime/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── realtime.py
│       │   │   │   ├── sessions.py
│       │   │   │   └── transcription_sessions.py
│       │   │   └── threads/
│       │   │       ├── __init__.py
│       │   │       ├── messages.py
│       │   │       ├── runs/
│       │   │       │   ├── __init__.py
│       │   │       │   ├── runs.py
│       │   │       │   └── steps.py
│       │   │       └── threads.py
│       │   ├── chat/
│       │   │   ├── __init__.py
│       │   │   ├── chat.py
│       │   │   └── completions/
│       │   │       ├── __init__.py
│       │   │       ├── completions.py
│       │   │       └── messages.py
│       │   ├── completions.py
│       │   ├── containers/
│       │   │   ├── __init__.py
│       │   │   ├── containers.py
│       │   │   └── files/
│       │   │       ├── __init__.py
│       │   │       ├── content.py
│       │   │       └── files.py
│       │   ├── conversations/
│       │   │   ├── __init__.py
│       │   │   ├── api.md
│       │   │   ├── conversations.py
│       │   │   └── items.py
│       │   ├── embeddings.py
│       │   ├── evals/
│       │   │   ├── __init__.py
│       │   │   ├── evals.py
│       │   │   └── runs/
│       │   │       ├── __init__.py
│       │   │       ├── output_items.py
│       │   │       └── runs.py
│       │   ├── files.py
│       │   ├── fine_tuning/
│       │   │   ├── __init__.py
│       │   │   ├── alpha/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── alpha.py
│       │   │   │   └── graders.py
│       │   │   ├── checkpoints/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── checkpoints.py
│       │   │   │   └── permissions.py
│       │   │   ├── fine_tuning.py
│       │   │   └── jobs/
│       │   │       ├── __init__.py
│       │   │       ├── checkpoints.py
│       │   │       └── jobs.py
│       │   ├── images.py
│       │   ├── models.py
│       │   ├── moderations.py
│       │   ├── realtime/
│       │   │   ├── __init__.py
│       │   │   ├── api.md
│       │   │   ├── calls.py
│       │   │   ├── client_secrets.py
│       │   │   └── realtime.py
│       │   ├── responses/
│       │   │   ├── __init__.py
│       │   │   ├── api.md
│       │   │   ├── input_items.py
│       │   │   ├── input_tokens.py
│       │   │   └── responses.py
│       │   ├── skills/
│       │   │   ├── __init__.py
│       │   │   ├── content.py
│       │   │   ├── skills.py
│       │   │   └── versions/
│       │   │       ├── __init__.py
│       │   │       ├── content.py
│       │   │       └── versions.py
│       │   ├── uploads/
│       │   │   ├── __init__.py
│       │   │   ├── parts.py
│       │   │   └── uploads.py
│       │   ├── vector_stores/
│       │   │   ├── __init__.py
│       │   │   ├── file_batches.py
│       │   │   ├── files.py
│       │   │   └── vector_stores.py
│       │   ├── videos.py
│       │   └── webhooks/
│       │       ├── __init__.py
│       │       ├── api.md
│       │       └── webhooks.py
│       ├── types/
│       │   ├── __init__.py
│       │   ├── audio/
│       │   │   ├── __init__.py
│       │   │   ├── speech_create_params.py
│       │   │   ├── speech_model.py
│       │   │   ├── transcription.py
│       │   │   ├── transcription_create_params.py
│       │   │   ├── transcription_create_response.py
│       │   │   ├── transcription_diarized.py
│       │   │   ├── transcription_diarized_segment.py
│       │   │   ├── transcription_include.py
│       │   │   ├── transcription_segment.py
│       │   │   ├── transcription_stream_event.py
│       │   │   ├── transcription_text_delta_event.py
│       │   │   ├── transcription_text_done_event.py
│       │   │   ├── transcription_text_segment_event.py
│       │   │   ├── transcription_verbose.py
│       │   │   ├── transcription_word.py
│       │   │   ├── translation.py
│       │   │   ├── translation_create_params.py
│       │   │   ├── translation_create_response.py
│       │   │   └── translation_verbose.py
│       │   ├── audio_model.py
│       │   ├── audio_response_format.py
│       │   ├── auto_file_chunking_strategy_param.py
│       │   ├── batch.py
│       │   ├── batch_create_params.py
│       │   ├── batch_error.py
│       │   ├── batch_list_params.py
│       │   ├── batch_request_counts.py
│       │   ├── batch_usage.py
│       │   ├── beta/
│       │   │   ├── __init__.py
│       │   │   ├── assistant.py
│       │   │   ├── assistant_create_params.py
│       │   │   ├── assistant_deleted.py
│       │   │   ├── assistant_list_params.py
│       │   │   ├── assistant_response_format_option.py
│       │   │   ├── assistant_response_format_option_param.py
│       │   │   ├── assistant_stream_event.py
│       │   │   ├── assistant_tool.py
│       │   │   ├── assistant_tool_choice.py
│       │   │   ├── assistant_tool_choice_function.py
│       │   │   ├── assistant_tool_choice_function_param.py
│       │   │   ├── assistant_tool_choice_option.py
│       │   │   ├── assistant_tool_choice_option_param.py
│       │   │   ├── assistant_tool_choice_param.py
│       │   │   ├── assistant_tool_param.py
│       │   │   ├── assistant_update_params.py
│       │   │   ├── chat/
│       │   │   │   └── __init__.py
│       │   │   ├── chatkit/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── chat_session.py
│       │   │   │   ├── chat_session_automatic_thread_titling.py
│       │   │   │   ├── chat_session_chatkit_configuration.py
│       │   │   │   ├── chat_session_chatkit_configuration_param.py
│       │   │   │   ├── chat_session_expires_after_param.py
│       │   │   │   ├── chat_session_file_upload.py
│       │   │   │   ├── chat_session_history.py
│       │   │   │   ├── chat_session_rate_limits.py
│       │   │   │   ├── chat_session_rate_limits_param.py
│       │   │   │   ├── chat_session_status.py
│       │   │   │   ├── chat_session_workflow_param.py
│       │   │   │   ├── chatkit_attachment.py
│       │   │   │   ├── chatkit_response_output_text.py
│       │   │   │   ├── chatkit_thread.py
│       │   │   │   ├── chatkit_thread_assistant_message_item.py
│       │   │   │   ├── chatkit_thread_item_list.py
│       │   │   │   ├── chatkit_thread_user_message_item.py
│       │   │   │   ├── chatkit_widget_item.py
│       │   │   │   ├── session_create_params.py
│       │   │   │   ├── thread_delete_response.py
│       │   │   │   ├── thread_list_items_params.py
│       │   │   │   └── thread_list_params.py
│       │   │   ├── chatkit_workflow.py
│       │   │   ├── code_interpreter_tool.py
│       │   │   ├── code_interpreter_tool_param.py
│       │   │   ├── file_search_tool.py
│       │   │   ├── file_search_tool_param.py
│       │   │   ├── function_tool.py
│       │   │   ├── function_tool_param.py
│       │   │   ├── realtime/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── conversation_created_event.py
│       │   │   │   ├── conversation_item.py
│       │   │   │   ├── conversation_item_content.py
│       │   │   │   ├── conversation_item_content_param.py
│       │   │   │   ├── conversation_item_create_event.py
│       │   │   │   ├── conversation_item_create_event_param.py
│       │   │   │   ├── conversation_item_created_event.py
│       │   │   │   ├── conversation_item_delete_event.py
│       │   │   │   ├── conversation_item_delete_event_param.py
│       │   │   │   ├── conversation_item_deleted_event.py
│       │   │   │   ├── conversation_item_input_audio_transcription_completed_event.py
│       │   │   │   ├── conversation_item_input_audio_transcription_delta_event.py
│       │   │   │   ├── conversation_item_input_audio_transcription_failed_event.py
│       │   │   │   ├── conversation_item_param.py
│       │   │   │   ├── conversation_item_retrieve_event.py
│       │   │   │   ├── conversation_item_retrieve_event_param.py
│       │   │   │   ├── conversation_item_truncate_event.py
│       │   │   │   ├── conversation_item_truncate_event_param.py
│       │   │   │   ├── conversation_item_truncated_event.py
│       │   │   │   ├── conversation_item_with_reference.py
│       │   │   │   ├── conversation_item_with_reference_param.py
│       │   │   │   ├── error_event.py
│       │   │   │   ├── input_audio_buffer_append_event.py
│       │   │   │   ├── input_audio_buffer_append_event_param.py
│       │   │   │   ├── input_audio_buffer_clear_event.py
│       │   │   │   ├── input_audio_buffer_clear_event_param.py
│       │   │   │   ├── input_audio_buffer_cleared_event.py
│       │   │   │   ├── input_audio_buffer_commit_event.py
│       │   │   │   ├── input_audio_buffer_commit_event_param.py
│       │   │   │   ├── input_audio_buffer_committed_event.py
│       │   │   │   ├── input_audio_buffer_speech_started_event.py
│       │   │   │   ├── input_audio_buffer_speech_stopped_event.py
│       │   │   │   ├── rate_limits_updated_event.py
│       │   │   │   ├── realtime_client_event.py
│       │   │   │   ├── realtime_client_event_param.py
│       │   │   │   ├── realtime_connect_params.py
│       │   │   │   ├── realtime_response.py
│       │   │   │   ├── realtime_response_status.py
│       │   │   │   ├── realtime_response_usage.py
│       │   │   │   ├── realtime_server_event.py
│       │   │   │   ├── response_audio_delta_event.py
│       │   │   │   ├── response_audio_done_event.py
│       │   │   │   ├── response_audio_transcript_delta_event.py
│       │   │   │   ├── response_audio_transcript_done_event.py
│       │   │   │   ├── response_cancel_event.py
│       │   │   │   ├── response_cancel_event_param.py
│       │   │   │   ├── response_content_part_added_event.py
│       │   │   │   ├── response_content_part_done_event.py
│       │   │   │   ├── response_create_event.py
│       │   │   │   ├── response_create_event_param.py
│       │   │   │   ├── response_created_event.py
│       │   │   │   ├── response_done_event.py
│       │   │   │   ├── response_function_call_arguments_delta_event.py
│       │   │   │   ├── response_function_call_arguments_done_event.py
│       │   │   │   ├── response_output_item_added_event.py
│       │   │   │   ├── response_output_item_done_event.py
│       │   │   │   ├── response_text_delta_event.py
│       │   │   │   ├── response_text_done_event.py
│       │   │   │   ├── session.py
│       │   │   │   ├── session_create_params.py
│       │   │   │   ├── session_create_response.py
│       │   │   │   ├── session_created_event.py
│       │   │   │   ├── session_update_event.py
│       │   │   │   ├── session_update_event_param.py
│       │   │   │   ├── session_updated_event.py
│       │   │   │   ├── transcription_session.py
│       │   │   │   ├── transcription_session_create_params.py
│       │   │   │   ├── transcription_session_update.py
│       │   │   │   ├── transcription_session_update_param.py
│       │   │   │   └── transcription_session_updated_event.py
│       │   │   ├── thread.py
│       │   │   ├── thread_create_and_run_params.py
│       │   │   ├── thread_create_params.py
│       │   │   ├── thread_deleted.py
│       │   │   ├── thread_update_params.py
│       │   │   └── threads/
│       │   │       ├── __init__.py
│       │   │       ├── annotation.py
│       │   │       ├── annotation_delta.py
│       │   │       ├── file_citation_annotation.py
│       │   │       ├── file_citation_delta_annotation.py
│       │   │       ├── file_path_annotation.py
│       │   │       ├── file_path_delta_annotation.py
│       │   │       ├── image_file.py
│       │   │       ├── image_file_content_block.py
│       │   │       ├── image_file_content_block_param.py
│       │   │       ├── image_file_delta.py
│       │   │       ├── image_file_delta_block.py
│       │   │       ├── image_file_param.py
│       │   │       ├── image_url.py
│       │   │       ├── image_url_content_block.py
│       │   │       ├── image_url_content_block_param.py
│       │   │       ├── image_url_delta.py
│       │   │       ├── image_url_delta_block.py
│       │   │       ├── image_url_param.py
│       │   │       ├── message.py
│       │   │       ├── message_content.py
│       │   │       ├── message_content_delta.py
│       │   │       ├── message_content_part_param.py
│       │   │       ├── message_create_params.py
│       │   │       ├── message_deleted.py
│       │   │       ├── message_delta.py
│       │   │       ├── message_delta_event.py
│       │   │       ├── message_list_params.py
│       │   │       ├── message_update_params.py
│       │   │       ├── refusal_content_block.py
│       │   │       ├── refusal_delta_block.py
│       │   │       ├── required_action_function_tool_call.py
│       │   │       ├── run.py
│       │   │       ├── run_create_params.py
│       │   │       ├── run_list_params.py
│       │   │       ├── run_status.py
│       │   │       ├── run_submit_tool_outputs_params.py
│       │   │       ├── run_update_params.py
│       │   │       ├── runs/
│       │   │       │   ├── __init__.py
│       │   │       │   ├── code_interpreter_logs.py
│       │   │       │   ├── code_interpreter_output_image.py
│       │   │       │   ├── code_interpreter_tool_call.py
│       │   │       │   ├── code_interpreter_tool_call_delta.py
│       │   │       │   ├── file_search_tool_call.py
│       │   │       │   ├── file_search_tool_call_delta.py
│       │   │       │   ├── function_tool_call.py
│       │   │       │   ├── function_tool_call_delta.py
│       │   │       │   ├── message_creation_step_details.py
│       │   │       │   ├── run_step.py
│       │   │       │   ├── run_step_delta.py
│       │   │       │   ├── run_step_delta_event.py
│       │   │       │   ├── run_step_delta_message_delta.py
│       │   │       │   ├── run_step_include.py
│       │   │       │   ├── step_list_params.py
│       │   │       │   ├── step_retrieve_params.py
│       │   │       │   ├── tool_call.py
│       │   │       │   ├── tool_call_delta.py
│       │   │       │   ├── tool_call_delta_object.py
│       │   │       │   └── tool_calls_step_details.py
│       │   │       ├── text.py
│       │   │       ├── text_content_block.py
│       │   │       ├── text_content_block_param.py
│       │   │       ├── text_delta.py
│       │   │       └── text_delta_block.py
│       │   ├── chat/
│       │   │   ├── __init__.py
│       │   │   ├── chat_completion.py
│       │   │   ├── chat_completion_allowed_tool_choice_param.py
│       │   │   ├── chat_completion_allowed_tools_param.py
│       │   │   ├── chat_completion_assistant_message_param.py
│       │   │   ├── chat_completion_audio.py
│       │   │   ├── chat_completion_audio_param.py
│       │   │   ├── chat_completion_chunk.py
│       │   │   ├── chat_completion_content_part_image.py
│       │   │   ├── chat_completion_content_part_image_param.py
│       │   │   ├── chat_completion_content_part_input_audio_param.py
│       │   │   ├── chat_completion_content_part_param.py
│       │   │   ├── chat_completion_content_part_refusal_param.py
│       │   │   ├── chat_completion_content_part_text.py
│       │   │   ├── chat_completion_content_part_text_param.py
│       │   │   ├── chat_completion_custom_tool_param.py
│       │   │   ├── chat_completion_deleted.py
│       │   │   ├── chat_completion_developer_message_param.py
│       │   │   ├── chat_completion_function_call_option_param.py
│       │   │   ├── chat_completion_function_message_param.py
│       │   │   ├── chat_completion_function_tool.py
│       │   │   ├── chat_completion_function_tool_param.py
│       │   │   ├── chat_completion_message.py
│       │   │   ├── chat_completion_message_custom_tool_call.py
│       │   │   ├── chat_completion_message_custom_tool_call_param.py
│       │   │   ├── chat_completion_message_function_tool_call.py
│       │   │   ├── chat_completion_message_function_tool_call_param.py
│       │   │   ├── chat_completion_message_param.py
│       │   │   ├── chat_completion_message_tool_call.py
│       │   │   ├── chat_completion_message_tool_call_param.py
│       │   │   ├── chat_completion_message_tool_call_union_param.py
│       │   │   ├── chat_completion_modality.py
│       │   │   ├── chat_completion_named_tool_choice_custom_param.py
│       │   │   ├── chat_completion_named_tool_choice_param.py
│       │   │   ├── chat_completion_prediction_content_param.py
│       │   │   ├── chat_completion_reasoning_effort.py
│       │   │   ├── chat_completion_role.py
│       │   │   ├── chat_completion_store_message.py
│       │   │   ├── chat_completion_stream_options_param.py
│       │   │   ├── chat_completion_system_message_param.py
│       │   │   ├── chat_completion_token_logprob.py
│       │   │   ├── chat_completion_tool_choice_option_param.py
│       │   │   ├── chat_completion_tool_message_param.py
│       │   │   ├── chat_completion_tool_param.py
│       │   │   ├── chat_completion_tool_union_param.py
│       │   │   ├── chat_completion_user_message_param.py
│       │   │   ├── completion_create_params.py
│       │   │   ├── completion_list_params.py
│       │   │   ├── completion_update_params.py
│       │   │   ├── completions/
│       │   │   │   ├── __init__.py
│       │   │   │   └── message_list_params.py
│       │   │   ├── parsed_chat_completion.py
│       │   │   └── parsed_function_tool_call.py
│       │   ├── chat_model.py
│       │   ├── completion.py
│       │   ├── completion_choice.py
│       │   ├── completion_create_params.py
│       │   ├── completion_usage.py
│       │   ├── container_create_params.py
│       │   ├── container_create_response.py
│       │   ├── container_list_params.py
│       │   ├── container_list_response.py
│       │   ├── container_retrieve_response.py
│       │   ├── containers/
│       │   │   ├── __init__.py
│       │   │   ├── file_create_params.py
│       │   │   ├── file_create_response.py
│       │   │   ├── file_list_params.py
│       │   │   ├── file_list_response.py
│       │   │   ├── file_retrieve_response.py
│       │   │   └── files/
│       │   │       └── __init__.py
│       │   ├── conversations/
│       │   │   ├── __init__.py
│       │   │   ├── computer_screenshot_content.py
│       │   │   ├── conversation.py
│       │   │   ├── conversation_create_params.py
│       │   │   ├── conversation_deleted_resource.py
│       │   │   ├── conversation_item.py
│       │   │   ├── conversation_item_list.py
│       │   │   ├── conversation_update_params.py
│       │   │   ├── input_file_content.py
│       │   │   ├── input_file_content_param.py
│       │   │   ├── input_image_content.py
│       │   │   ├── input_image_content_param.py
│       │   │   ├── input_text_content.py
│       │   │   ├── input_text_content_param.py
│       │   │   ├── item_create_params.py
│       │   │   ├── item_list_params.py
│       │   │   ├── item_retrieve_params.py
│       │   │   ├── message.py
│       │   │   ├── output_text_content.py
│       │   │   ├── output_text_content_param.py
│       │   │   ├── refusal_content.py
│       │   │   ├── refusal_content_param.py
│       │   │   ├── summary_text_content.py
│       │   │   └── text_content.py
│       │   ├── create_embedding_response.py
│       │   ├── deleted_skill.py
│       │   ├── embedding.py
│       │   ├── embedding_create_params.py
│       │   ├── embedding_model.py
│       │   ├── eval_create_params.py
│       │   ├── eval_create_response.py
│       │   ├── eval_custom_data_source_config.py
│       │   ├── eval_delete_response.py
│       │   ├── eval_list_params.py
│       │   ├── eval_list_response.py
│       │   ├── eval_retrieve_response.py
│       │   ├── eval_stored_completions_data_source_config.py
│       │   ├── eval_update_params.py
│       │   ├── eval_update_response.py
│       │   ├── evals/
│       │   │   ├── __init__.py
│       │   │   ├── create_eval_completions_run_data_source.py
│       │   │   ├── create_eval_completions_run_data_source_param.py
│       │   │   ├── create_eval_jsonl_run_data_source.py
│       │   │   ├── create_eval_jsonl_run_data_source_param.py
│       │   │   ├── eval_api_error.py
│       │   │   ├── run_cancel_response.py
│       │   │   ├── run_create_params.py
│       │   │   ├── run_create_response.py
│       │   │   ├── run_delete_response.py
│       │   │   ├── run_list_params.py
│       │   │   ├── run_list_response.py
│       │   │   ├── run_retrieve_response.py
│       │   │   └── runs/
│       │   │       ├── __init__.py
│       │   │       ├── output_item_list_params.py
│       │   │       ├── output_item_list_response.py
│       │   │       └── output_item_retrieve_response.py
│       │   ├── file_chunking_strategy.py
│       │   ├── file_chunking_strategy_param.py
│       │   ├── file_content.py
│       │   ├── file_create_params.py
│       │   ├── file_deleted.py
│       │   ├── file_list_params.py
│       │   ├── file_object.py
│       │   ├── file_purpose.py
│       │   ├── fine_tuning/
│       │   │   ├── __init__.py
│       │   │   ├── alpha/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── grader_run_params.py
│       │   │   │   ├── grader_run_response.py
│       │   │   │   ├── grader_validate_params.py
│       │   │   │   └── grader_validate_response.py
│       │   │   ├── checkpoints/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── permission_create_params.py
│       │   │   │   ├── permission_create_response.py
│       │   │   │   ├── permission_delete_response.py
│       │   │   │   ├── permission_list_params.py
│       │   │   │   ├── permission_list_response.py
│       │   │   │   ├── permission_retrieve_params.py
│       │   │   │   └── permission_retrieve_response.py
│       │   │   ├── dpo_hyperparameters.py
│       │   │   ├── dpo_hyperparameters_param.py
│       │   │   ├── dpo_method.py
│       │   │   ├── dpo_method_param.py
│       │   │   ├── fine_tuning_job.py
│       │   │   ├── fine_tuning_job_event.py
│       │   │   ├── fine_tuning_job_integration.py
│       │   │   ├── fine_tuning_job_wandb_integration.py
│       │   │   ├── fine_tuning_job_wandb_integration_object.py
│       │   │   ├── job_create_params.py
│       │   │   ├── job_list_events_params.py
│       │   │   ├── job_list_params.py
│       │   │   ├── jobs/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── checkpoint_list_params.py
│       │   │   │   └── fine_tuning_job_checkpoint.py
│       │   │   ├── reinforcement_hyperparameters.py
│       │   │   ├── reinforcement_hyperparameters_param.py
│       │   │   ├── reinforcement_method.py
│       │   │   ├── reinforcement_method_param.py
│       │   │   ├── supervised_hyperparameters.py
│       │   │   ├── supervised_hyperparameters_param.py
│       │   │   ├── supervised_method.py
│       │   │   └── supervised_method_param.py
│       │   ├── graders/
│       │   │   ├── __init__.py
│       │   │   ├── grader_inputs.py
│       │   │   ├── grader_inputs_param.py
│       │   │   ├── label_model_grader.py
│       │   │   ├── label_model_grader_param.py
│       │   │   ├── multi_grader.py
│       │   │   ├── multi_grader_param.py
│       │   │   ├── python_grader.py
│       │   │   ├── python_grader_param.py
│       │   │   ├── score_model_grader.py
│       │   │   ├── score_model_grader_param.py
│       │   │   ├── string_check_grader.py
│       │   │   ├── string_check_grader_param.py
│       │   │   ├── text_similarity_grader.py
│       │   │   └── text_similarity_grader_param.py
│       │   ├── image.py
│       │   ├── image_create_variation_params.py
│       │   ├── image_edit_completed_event.py
│       │   ├── image_edit_params.py
│       │   ├── image_edit_partial_image_event.py
│       │   ├── image_edit_stream_event.py
│       │   ├── image_gen_completed_event.py
│       │   ├── image_gen_partial_image_event.py
│       │   ├── image_gen_stream_event.py
│       │   ├── image_generate_params.py
│       │   ├── image_input_reference_param.py
│       │   ├── image_model.py
│       │   ├── images_response.py
│       │   ├── model.py
│       │   ├── model_deleted.py
│       │   ├── moderation.py
│       │   ├── moderation_create_params.py
│       │   ├── moderation_create_response.py
│       │   ├── moderation_image_url_input_param.py
│       │   ├── moderation_model.py
│       │   ├── moderation_multi_modal_input_param.py
│       │   ├── moderation_text_input_param.py
│       │   ├── other_file_chunking_strategy_object.py
│       │   ├── realtime/
│       │   │   ├── __init__.py
│       │   │   ├── audio_transcription.py
│       │   │   ├── audio_transcription_param.py
│       │   │   ├── call_accept_params.py
│       │   │   ├── call_create_params.py
│       │   │   ├── call_refer_params.py
│       │   │   ├── call_reject_params.py
│       │   │   ├── client_secret_create_params.py
│       │   │   ├── client_secret_create_response.py
│       │   │   ├── conversation_created_event.py
│       │   │   ├── conversation_item.py
│       │   │   ├── conversation_item_added.py
│       │   │   ├── conversation_item_create_event.py
│       │   │   ├── conversation_item_create_event_param.py
│       │   │   ├── conversation_item_created_event.py
│       │   │   ├── conversation_item_delete_event.py
│       │   │   ├── conversation_item_delete_event_param.py
│       │   │   ├── conversation_item_deleted_event.py
│       │   │   ├── conversation_item_done.py
│       │   │   ├── conversation_item_input_audio_transcription_completed_event.py
│       │   │   ├── conversation_item_input_audio_transcription_delta_event.py
│       │   │   ├── conversation_item_input_audio_transcription_failed_event.py
│       │   │   ├── conversation_item_input_audio_transcription_segment.py
│       │   │   ├── conversation_item_param.py
│       │   │   ├── conversation_item_retrieve_event.py
│       │   │   ├── conversation_item_retrieve_event_param.py
│       │   │   ├── conversation_item_truncate_event.py
│       │   │   ├── conversation_item_truncate_event_param.py
│       │   │   ├── conversation_item_truncated_event.py
│       │   │   ├── input_audio_buffer_append_event.py
│       │   │   ├── input_audio_buffer_append_event_param.py
│       │   │   ├── input_audio_buffer_clear_event.py
│       │   │   ├── input_audio_buffer_clear_event_param.py
│       │   │   ├── input_audio_buffer_cleared_event.py
│       │   │   ├── input_audio_buffer_commit_event.py
│       │   │   ├── input_audio_buffer_commit_event_param.py
│       │   │   ├── input_audio_buffer_committed_event.py
│       │   │   ├── input_audio_buffer_dtmf_event_received_event.py
│       │   │   ├── input_audio_buffer_speech_started_event.py
│       │   │   ├── input_audio_buffer_speech_stopped_event.py
│       │   │   ├── input_audio_buffer_timeout_triggered.py
│       │   │   ├── log_prob_properties.py
│       │   │   ├── mcp_list_tools_completed.py
│       │   │   ├── mcp_list_tools_failed.py
│       │   │   ├── mcp_list_tools_in_progress.py
│       │   │   ├── noise_reduction_type.py
│       │   │   ├── output_audio_buffer_clear_event.py
│       │   │   ├── output_audio_buffer_clear_event_param.py
│       │   │   ├── rate_limits_updated_event.py
│       │   │   ├── realtime_audio_config.py
│       │   │   ├── realtime_audio_config_input.py
│       │   │   ├── realtime_audio_config_input_param.py
│       │   │   ├── realtime_audio_config_output.py
│       │   │   ├── realtime_audio_config_output_param.py
│       │   │   ├── realtime_audio_config_param.py
│       │   │   ├── realtime_audio_formats.py
│       │   │   ├── realtime_audio_formats_param.py
│       │   │   ├── realtime_audio_input_turn_detection.py
│       │   │   ├── realtime_audio_input_turn_detection_param.py
│       │   │   ├── realtime_client_event.py
│       │   │   ├── realtime_client_event_param.py
│       │   │   ├── realtime_connect_params.py
│       │   │   ├── realtime_conversation_item_assistant_message.py
│       │   │   ├── realtime_conversation_item_assistant_message_param.py
│       │   │   ├── realtime_conversation_item_function_call.py
│       │   │   ├── realtime_conversation_item_function_call_output.py
│       │   │   ├── realtime_conversation_item_function_call_output_param.py
│       │   │   ├── realtime_conversation_item_function_call_param.py
│       │   │   ├── realtime_conversation_item_system_message.py
│       │   │   ├── realtime_conversation_item_system_message_param.py
│       │   │   ├── realtime_conversation_item_user_message.py
│       │   │   ├── realtime_conversation_item_user_message_param.py
│       │   │   ├── realtime_error.py
│       │   │   ├── realtime_error_event.py
│       │   │   ├── realtime_function_tool.py
│       │   │   ├── realtime_function_tool_param.py
│       │   │   ├── realtime_mcp_approval_request.py
│       │   │   ├── realtime_mcp_approval_request_param.py
│       │   │   ├── realtime_mcp_approval_response.py
│       │   │   ├── realtime_mcp_approval_response_param.py
│       │   │   ├── realtime_mcp_list_tools.py
│       │   │   ├── realtime_mcp_list_tools_param.py
│       │   │   ├── realtime_mcp_protocol_error.py
│       │   │   ├── realtime_mcp_protocol_error_param.py
│       │   │   ├── realtime_mcp_tool_call.py
│       │   │   ├── realtime_mcp_tool_call_param.py
│       │   │   ├── realtime_mcp_tool_execution_error.py
│       │   │   ├── realtime_mcp_tool_execution_error_param.py
│       │   │   ├── realtime_mcphttp_error.py
│       │   │   ├── realtime_mcphttp_error_param.py
│       │   │   ├── realtime_response.py
│       │   │   ├── realtime_response_create_audio_output.py
│       │   │   ├── realtime_response_create_audio_output_param.py
│       │   │   ├── realtime_response_create_mcp_tool.py
│       │   │   ├── realtime_response_create_mcp_tool_param.py
│       │   │   ├── realtime_response_create_params.py
│       │   │   ├── realtime_response_create_params_param.py
│       │   │   ├── realtime_response_status.py
│       │   │   ├── realtime_response_usage.py
│       │   │   ├── realtime_response_usage_input_token_details.py
│       │   │   ├── realtime_response_usage_output_token_details.py
│       │   │   ├── realtime_server_event.py
│       │   │   ├── realtime_session_client_secret.py
│       │   │   ├── realtime_session_create_request.py
│       │   │   ├── realtime_session_create_request_param.py
│       │   │   ├── realtime_session_create_response.py
│       │   │   ├── realtime_tool_choice_config.py
│       │   │   ├── realtime_tool_choice_config_param.py
│       │   │   ├── realtime_tools_config.py
│       │   │   ├── realtime_tools_config_param.py
│       │   │   ├── realtime_tools_config_union.py
│       │   │   ├── realtime_tools_config_union_param.py
│       │   │   ├── realtime_tracing_config.py
│       │   │   ├── realtime_tracing_config_param.py
│       │   │   ├── realtime_transcription_session_audio.py
│       │   │   ├── realtime_transcription_session_audio_input.py
│       │   │   ├── realtime_transcription_session_audio_input_param.py
│       │   │   ├── realtime_transcription_session_audio_input_turn_detection.py
│       │   │   ├── realtime_transcription_session_audio_input_turn_detection_param.py
│       │   │   ├── realtime_transcription_session_audio_param.py
│       │   │   ├── realtime_transcription_session_create_request.py
│       │   │   ├── realtime_transcription_session_create_request_param.py
│       │   │   ├── realtime_transcription_session_create_response.py
│       │   │   ├── realtime_transcription_session_turn_detection.py
│       │   │   ├── realtime_truncation.py
│       │   │   ├── realtime_truncation_param.py
│       │   │   ├── realtime_truncation_retention_ratio.py
│       │   │   ├── realtime_truncation_retention_ratio_param.py
│       │   │   ├── response_audio_delta_event.py
│       │   │   ├── response_audio_done_event.py
│       │   │   ├── response_audio_transcript_delta_event.py
│       │   │   ├── response_audio_transcript_done_event.py
│       │   │   ├── response_cancel_event.py
│       │   │   ├── response_cancel_event_param.py
│       │   │   ├── response_content_part_added_event.py
│       │   │   ├── response_content_part_done_event.py
│       │   │   ├── response_create_event.py
│       │   │   ├── response_create_event_param.py
│       │   │   ├── response_created_event.py
│       │   │   ├── response_done_event.py
│       │   │   ├── response_function_call_arguments_delta_event.py
│       │   │   ├── response_function_call_arguments_done_event.py
│       │   │   ├── response_mcp_call_arguments_delta.py
│       │   │   ├── response_mcp_call_arguments_done.py
│       │   │   ├── response_mcp_call_completed.py
│       │   │   ├── response_mcp_call_failed.py
│       │   │   ├── response_mcp_call_in_progress.py
│       │   │   ├── response_output_item_added_event.py
│       │   │   ├── response_output_item_done_event.py
│       │   │   ├── response_text_delta_event.py
│       │   │   ├── response_text_done_event.py
│       │   │   ├── session_created_event.py
│       │   │   ├── session_update_event.py
│       │   │   ├── session_update_event_param.py
│       │   │   └── session_updated_event.py
│       │   ├── responses/
│       │   │   ├── __init__.py
│       │   │   ├── apply_patch_tool.py
│       │   │   ├── apply_patch_tool_param.py
│       │   │   ├── compacted_response.py
│       │   │   ├── computer_action.py
│       │   │   ├── computer_action_list.py
│       │   │   ├── computer_action_list_param.py
│       │   │   ├── computer_action_param.py
│       │   │   ├── computer_tool.py
│       │   │   ├── computer_tool_param.py
│       │   │   ├── computer_use_preview_tool.py
│       │   │   ├── computer_use_preview_tool_param.py
│       │   │   ├── container_auto.py
│       │   │   ├── container_auto_param.py
│       │   │   ├── container_network_policy_allowlist.py
│       │   │   ├── container_network_policy_allowlist_param.py
│       │   │   ├── container_network_policy_disabled.py
│       │   │   ├── container_network_policy_disabled_param.py
│       │   │   ├── container_network_policy_domain_secret.py
│       │   │   ├── container_network_policy_domain_secret_param.py
│       │   │   ├── container_reference.py
│       │   │   ├── container_reference_param.py
│       │   │   ├── custom_tool.py
│       │   │   ├── custom_tool_param.py
│       │   │   ├── easy_input_message.py
│       │   │   ├── easy_input_message_param.py
│       │   │   ├── file_search_tool.py
│       │   │   ├── file_search_tool_param.py
│       │   │   ├── function_shell_tool.py
│       │   │   ├── function_shell_tool_param.py
│       │   │   ├── function_tool.py
│       │   │   ├── function_tool_param.py
│       │   │   ├── inline_skill.py
│       │   │   ├── inline_skill_param.py
│       │   │   ├── inline_skill_source.py
│       │   │   ├── inline_skill_source_param.py
│       │   │   ├── input_item_list_params.py
│       │   │   ├── input_token_count_params.py
│       │   │   ├── input_token_count_response.py
│       │   │   ├── local_environment.py
│       │   │   ├── local_environment_param.py
│       │   │   ├── local_skill.py
│       │   │   ├── local_skill_param.py
│       │   │   ├── namespace_tool.py
│       │   │   ├── namespace_tool_param.py
│       │   │   ├── parsed_response.py
│       │   │   ├── response.py
│       │   │   ├── response_apply_patch_tool_call.py
│       │   │   ├── response_apply_patch_tool_call_output.py
│       │   │   ├── response_audio_delta_event.py
│       │   │   ├── response_audio_done_event.py
│       │   │   ├── response_audio_transcript_delta_event.py
│       │   │   ├── response_audio_transcript_done_event.py
│       │   │   ├── response_code_interpreter_call_code_delta_event.py
│       │   │   ├── response_code_interpreter_call_code_done_event.py
│       │   │   ├── response_code_interpreter_call_completed_event.py
│       │   │   ├── response_code_interpreter_call_in_progress_event.py
│       │   │   ├── response_code_interpreter_call_interpreting_event.py
│       │   │   ├── response_code_interpreter_tool_call.py
│       │   │   ├── response_code_interpreter_tool_call_param.py
│       │   │   ├── response_compact_params.py
│       │   │   ├── response_compaction_item.py
│       │   │   ├── response_compaction_item_param.py
│       │   │   ├── response_compaction_item_param_param.py
│       │   │   ├── response_completed_event.py
│       │   │   ├── response_computer_tool_call.py
│       │   │   ├── response_computer_tool_call_output_item.py
│       │   │   ├── response_computer_tool_call_output_screenshot.py
│       │   │   ├── response_computer_tool_call_output_screenshot_param.py
│       │   │   ├── response_computer_tool_call_param.py
│       │   │   ├── response_container_reference.py
│       │   │   ├── response_content_part_added_event.py
│       │   │   ├── response_content_part_done_event.py
│       │   │   ├── response_conversation_param.py
│       │   │   ├── response_conversation_param_param.py
│       │   │   ├── response_create_params.py
│       │   │   ├── response_created_event.py
│       │   │   ├── response_custom_tool_call.py
│       │   │   ├── response_custom_tool_call_input_delta_event.py
│       │   │   ├── response_custom_tool_call_input_done_event.py
│       │   │   ├── response_custom_tool_call_output.py
│       │   │   ├── response_custom_tool_call_output_param.py
│       │   │   ├── response_custom_tool_call_param.py
│       │   │   ├── response_error.py
│       │   │   ├── response_error_event.py
│       │   │   ├── response_failed_event.py
│       │   │   ├── response_file_search_call_completed_event.py
│       │   │   ├── response_file_search_call_in_progress_event.py
│       │   │   ├── response_file_search_call_searching_event.py
│       │   │   ├── response_file_search_tool_call.py
│       │   │   ├── response_file_search_tool_call_param.py
│       │   │   ├── response_format_text_config.py
│       │   │   ├── response_format_text_config_param.py
│       │   │   ├── response_format_text_json_schema_config.py
│       │   │   ├── response_format_text_json_schema_config_param.py
│       │   │   ├── response_function_call_arguments_delta_event.py
│       │   │   ├── response_function_call_arguments_done_event.py
│       │   │   ├── response_function_call_output_item.py
│       │   │   ├── response_function_call_output_item_list.py
│       │   │   ├── response_function_call_output_item_list_param.py
│       │   │   ├── response_function_call_output_item_param.py
│       │   │   ├── response_function_shell_call_output_content.py
│       │   │   ├── response_function_shell_call_output_content_param.py
│       │   │   ├── response_function_shell_tool_call.py
│       │   │   ├── response_function_shell_tool_call_output.py
│       │   │   ├── response_function_tool_call.py
│       │   │   ├── response_function_tool_call_item.py
│       │   │   ├── response_function_tool_call_output_item.py
│       │   │   ├── response_function_tool_call_param.py
│       │   │   ├── response_function_web_search.py
│       │   │   ├── response_function_web_search_param.py
│       │   │   ├── response_image_gen_call_completed_event.py
│       │   │   ├── response_image_gen_call_generating_event.py
│       │   │   ├── response_image_gen_call_in_progress_event.py
│       │   │   ├── response_image_gen_call_partial_image_event.py
│       │   │   ├── response_in_progress_event.py
│       │   │   ├── response_includable.py
│       │   │   ├── response_incomplete_event.py
│       │   │   ├── response_input.py
│       │   │   ├── response_input_audio.py
│       │   │   ├── response_input_audio_param.py
│       │   │   ├── response_input_content.py
│       │   │   ├── response_input_content_param.py
│       │   │   ├── response_input_file.py
│       │   │   ├── response_input_file_content.py
│       │   │   ├── response_input_file_content_param.py
│       │   │   ├── response_input_file_param.py
│       │   │   ├── response_input_image.py
│       │   │   ├── response_input_image_content.py
│       │   │   ├── response_input_image_content_param.py
│       │   │   ├── response_input_image_param.py
│       │   │   ├── response_input_item.py
│       │   │   ├── response_input_item_param.py
│       │   │   ├── response_input_message_content_list.py
│       │   │   ├── response_input_message_content_list_param.py
│       │   │   ├── response_input_message_item.py
│       │   │   ├── response_input_param.py
│       │   │   ├── response_input_text.py
│       │   │   ├── response_input_text_content.py
│       │   │   ├── response_input_text_content_param.py
│       │   │   ├── response_input_text_param.py
│       │   │   ├── response_item.py
│       │   │   ├── response_item_list.py
│       │   │   ├── response_local_environment.py
│       │   │   ├── response_mcp_call_arguments_delta_event.py
│       │   │   ├── response_mcp_call_arguments_done_event.py
│       │   │   ├── response_mcp_call_completed_event.py
│       │   │   ├── response_mcp_call_failed_event.py
│       │   │   ├── response_mcp_call_in_progress_event.py
│       │   │   ├── response_mcp_list_tools_completed_event.py
│       │   │   ├── response_mcp_list_tools_failed_event.py
│       │   │   ├── response_mcp_list_tools_in_progress_event.py
│       │   │   ├── response_output_item.py
│       │   │   ├── response_output_item_added_event.py
│       │   │   ├── response_output_item_done_event.py
│       │   │   ├── response_output_message.py
│       │   │   ├── response_output_message_param.py
│       │   │   ├── response_output_refusal.py
│       │   │   ├── response_output_refusal_param.py
│       │   │   ├── response_output_text.py
│       │   │   ├── response_output_text_annotation_added_event.py
│       │   │   ├── response_output_text_param.py
│       │   │   ├── response_prompt.py
│       │   │   ├── response_prompt_param.py
│       │   │   ├── response_queued_event.py
│       │   │   ├── response_reasoning_item.py
│       │   │   ├── response_reasoning_item_param.py
│       │   │   ├── response_reasoning_summary_part_added_event.py
│       │   │   ├── response_reasoning_summary_part_done_event.py
│       │   │   ├── response_reasoning_summary_text_delta_event.py
│       │   │   ├── response_reasoning_summary_text_done_event.py
│       │   │   ├── response_reasoning_text_delta_event.py
│       │   │   ├── response_reasoning_text_done_event.py
│       │   │   ├── response_refusal_delta_event.py
│       │   │   ├── response_refusal_done_event.py
│       │   │   ├── response_retrieve_params.py
│       │   │   ├── response_status.py
│       │   │   ├── response_stream_event.py
│       │   │   ├── response_text_config.py
│       │   │   ├── response_text_config_param.py
│       │   │   ├── response_text_delta_event.py
│       │   │   ├── response_text_done_event.py
│       │   │   ├── response_tool_search_call.py
│       │   │   ├── response_tool_search_output_item.py
│       │   │   ├── response_tool_search_output_item_param.py
│       │   │   ├── response_tool_search_output_item_param_param.py
│       │   │   ├── response_usage.py
│       │   │   ├── response_web_search_call_completed_event.py
│       │   │   ├── response_web_search_call_in_progress_event.py
│       │   │   ├── response_web_search_call_searching_event.py
│       │   │   ├── responses_client_event.py
│       │   │   ├── responses_client_event_param.py
│       │   │   ├── responses_server_event.py
│       │   │   ├── skill_reference.py
│       │   │   ├── skill_reference_param.py
│       │   │   ├── tool.py
│       │   │   ├── tool_choice_allowed.py
│       │   │   ├── tool_choice_allowed_param.py
│       │   │   ├── tool_choice_apply_patch.py
│       │   │   ├── tool_choice_apply_patch_param.py
│       │   │   ├── tool_choice_custom.py
│       │   │   ├── tool_choice_custom_param.py
│       │   │   ├── tool_choice_function.py
│       │   │   ├── tool_choice_function_param.py
│       │   │   ├── tool_choice_mcp.py
│       │   │   ├── tool_choice_mcp_param.py
│       │   │   ├── tool_choice_options.py
│       │   │   ├── tool_choice_shell.py
│       │   │   ├── tool_choice_shell_param.py
│       │   │   ├── tool_choice_types.py
│       │   │   ├── tool_choice_types_param.py
│       │   │   ├── tool_param.py
│       │   │   ├── tool_search_tool.py
│       │   │   ├── tool_search_tool_param.py
│       │   │   ├── web_search_preview_tool.py
│       │   │   ├── web_search_preview_tool_param.py
│       │   │   ├── web_search_tool.py
│       │   │   └── web_search_tool_param.py
│       │   ├── shared/
│       │   │   ├── __init__.py
│       │   │   ├── all_models.py
│       │   │   ├── chat_model.py
│       │   │   ├── comparison_filter.py
│       │   │   ├── compound_filter.py
│       │   │   ├── custom_tool_input_format.py
│       │   │   ├── error_object.py
│       │   │   ├── function_definition.py
│       │   │   ├── function_parameters.py
│       │   │   ├── metadata.py
│       │   │   ├── reasoning.py
│       │   │   ├── reasoning_effort.py
│       │   │   ├── response_format_json_object.py
│       │   │   ├── response_format_json_schema.py
│       │   │   ├── response_format_text.py
│       │   │   ├── response_format_text_grammar.py
│       │   │   ├── response_format_text_python.py
│       │   │   └── responses_model.py
│       │   ├── shared_params/
│       │   │   ├── __init__.py
│       │   │   ├── chat_model.py
│       │   │   ├── comparison_filter.py
│       │   │   ├── compound_filter.py
│       │   │   ├── custom_tool_input_format.py
│       │   │   ├── function_definition.py
│       │   │   ├── function_parameters.py
│       │   │   ├── metadata.py
│       │   │   ├── reasoning.py
│       │   │   ├── reasoning_effort.py
│       │   │   ├── response_format_json_object.py
│       │   │   ├── response_format_json_schema.py
│       │   │   ├── response_format_text.py
│       │   │   └── responses_model.py
│       │   ├── skill.py
│       │   ├── skill_create_params.py
│       │   ├── skill_list.py
│       │   ├── skill_list_params.py
│       │   ├── skill_update_params.py
│       │   ├── skills/
│       │   │   ├── __init__.py
│       │   │   ├── deleted_skill_version.py
│       │   │   ├── skill_version.py
│       │   │   ├── skill_version_list.py
│       │   │   ├── version_create_params.py
│       │   │   ├── version_list_params.py
│       │   │   └── versions/
│       │   │       └── __init__.py
│       │   ├── static_file_chunking_strategy.py
│       │   ├── static_file_chunking_strategy_object.py
│       │   ├── static_file_chunking_strategy_object_param.py
│       │   ├── static_file_chunking_strategy_param.py
│       │   ├── upload.py
│       │   ├── upload_complete_params.py
│       │   ├── upload_create_params.py
│       │   ├── uploads/
│       │   │   ├── __init__.py
│       │   │   ├── part_create_params.py
│       │   │   └── upload_part.py
│       │   ├── vector_store.py
│       │   ├── vector_store_create_params.py
│       │   ├── vector_store_deleted.py
│       │   ├── vector_store_list_params.py
│       │   ├── vector_store_search_params.py
│       │   ├── vector_store_search_response.py
│       │   ├── vector_store_update_params.py
│       │   ├── vector_stores/
│       │   │   ├── __init__.py
│       │   │   ├── file_batch_create_params.py
│       │   │   ├── file_batch_list_files_params.py
│       │   │   ├── file_content_response.py
│       │   │   ├── file_create_params.py
│       │   │   ├── file_list_params.py
│       │   │   ├── file_update_params.py
│       │   │   ├── vector_store_file.py
│       │   │   ├── vector_store_file_batch.py
│       │   │   └── vector_store_file_deleted.py
│       │   ├── video.py
│       │   ├── video_create_character_params.py
│       │   ├── video_create_character_response.py
│       │   ├── video_create_error.py
│       │   ├── video_create_params.py
│       │   ├── video_delete_response.py
│       │   ├── video_download_content_params.py
│       │   ├── video_edit_params.py
│       │   ├── video_extend_params.py
│       │   ├── video_get_character_response.py
│       │   ├── video_list_params.py
│       │   ├── video_model.py
│       │   ├── video_model_param.py
│       │   ├── video_remix_params.py
│       │   ├── video_seconds.py
│       │   ├── video_size.py
│       │   ├── webhooks/
│       │   │   ├── __init__.py
│       │   │   ├── batch_cancelled_webhook_event.py
│       │   │   ├── batch_completed_webhook_event.py
│       │   │   ├── batch_expired_webhook_event.py
│       │   │   ├── batch_failed_webhook_event.py
│       │   │   ├── eval_run_canceled_webhook_event.py
│       │   │   ├── eval_run_failed_webhook_event.py
│       │   │   ├── eval_run_succeeded_webhook_event.py
│       │   │   ├── fine_tuning_job_cancelled_webhook_event.py
│       │   │   ├── fine_tuning_job_failed_webhook_event.py
│       │   │   ├── fine_tuning_job_succeeded_webhook_event.py
│       │   │   ├── realtime_call_incoming_webhook_event.py
│       │   │   ├── response_cancelled_webhook_event.py
│       │   │   ├── response_completed_webhook_event.py
│       │   │   ├── response_failed_webhook_event.py
│       │   │   ├── response_incomplete_webhook_event.py
│       │   │   └── unwrap_webhook_event.py
│       │   └── websocket_connection_options.py
│       └── version.py
└── tests/
    ├── __init__.py
    ├── api_resources/
    │   ├── __init__.py
    │   ├── audio/
    │   │   ├── __init__.py
    │   │   ├── test_speech.py
    │   │   ├── test_transcriptions.py
    │   │   └── test_translations.py
    │   ├── beta/
    │   │   ├── __init__.py
    │   │   ├── chatkit/
    │   │   │   ├── __init__.py
    │   │   │   ├── test_sessions.py
    │   │   │   └── test_threads.py
    │   │   ├── test_assistants.py
    │   │   ├── test_realtime.py
    │   │   ├── test_threads.py
    │   │   └── threads/
    │   │       ├── __init__.py
    │   │       ├── runs/
    │   │       │   ├── __init__.py
    │   │       │   └── test_steps.py
    │   │       ├── test_messages.py
    │   │       └── test_runs.py
    │   ├── chat/
    │   │   ├── __init__.py
    │   │   ├── completions/
    │   │   │   ├── __init__.py
    │   │   │   └── test_messages.py
    │   │   └── test_completions.py
    │   ├── containers/
    │   │   ├── __init__.py
    │   │   ├── files/
    │   │   │   ├── __init__.py
    │   │   │   └── test_content.py
    │   │   └── test_files.py
    │   ├── conversations/
    │   │   ├── __init__.py
    │   │   └── test_items.py
    │   ├── evals/
    │   │   ├── __init__.py
    │   │   ├── runs/
    │   │   │   ├── __init__.py
    │   │   │   └── test_output_items.py
    │   │   └── test_runs.py
    │   ├── fine_tuning/
    │   │   ├── __init__.py
    │   │   ├── alpha/
    │   │   │   ├── __init__.py
    │   │   │   └── test_graders.py
    │   │   ├── checkpoints/
    │   │   │   ├── __init__.py
    │   │   │   └── test_permissions.py
    │   │   ├── jobs/
    │   │   │   ├── __init__.py
    │   │   │   └── test_checkpoints.py
    │   │   └── test_jobs.py
    │   ├── realtime/
    │   │   ├── __init__.py
    │   │   ├── test_calls.py
    │   │   └── test_client_secrets.py
    │   ├── responses/
    │   │   ├── __init__.py
    │   │   ├── test_input_items.py
    │   │   └── test_input_tokens.py
    │   ├── skills/
    │   │   ├── __init__.py
    │   │   ├── test_content.py
    │   │   ├── test_versions.py
    │   │   └── versions/
    │   │       ├── __init__.py
    │   │       └── test_content.py
    │   ├── test_batches.py
    │   ├── test_completions.py
    │   ├── test_containers.py
    │   ├── test_conversations.py
    │   ├── test_embeddings.py
    │   ├── test_evals.py
    │   ├── test_files.py
    │   ├── test_images.py
    │   ├── test_models.py
    │   ├── test_moderations.py
    │   ├── test_realtime.py
    │   ├── test_responses.py
    │   ├── test_skills.py
    │   ├── test_uploads.py
    │   ├── test_vector_stores.py
    │   ├── test_videos.py
    │   ├── test_webhooks.py
    │   ├── uploads/
    │   │   ├── __init__.py
    │   │   └── test_parts.py
    │   ├── vector_stores/
    │   │   ├── __init__.py
    │   │   ├── test_file_batches.py
    │   │   └── test_files.py
    │   └── webhooks/
    │       └── __init__.py
    ├── compat/
    │   └── test_tool_param.py
    ├── conftest.py
    ├── lib/
    │   ├── __init__.py
    │   ├── chat/
    │   │   ├── __init__.py
    │   │   ├── test_completions.py
    │   │   └── test_completions_streaming.py
    │   ├── responses/
    │   │   ├── __init__.py
    │   │   └── test_responses.py
    │   ├── schema_types/
    │   │   └── query.py
    │   ├── snapshots.py
    │   ├── test_assistants.py
    │   ├── test_audio.py
    │   ├── test_azure.py
    │   ├── test_old_api.py
    │   ├── test_pydantic.py
    │   └── utils.py
    ├── sample_file.txt
    ├── test_client.py
    ├── test_deepcopy.py
    ├── test_extract_files.py
    ├── test_files.py
    ├── test_legacy_response.py
    ├── test_models.py
    ├── test_module_client.py
    ├── test_qs.py
    ├── test_required_args.py
    ├── test_response.py
    ├── test_streaming.py
    ├── test_transform.py
    ├── test_utils/
    │   ├── test_datetime_parse.py
    │   ├── test_json.py
    │   ├── test_logging.py
    │   ├── test_proxy.py
    │   └── test_typing.py
    ├── test_websocket_connection_options.py
    └── utils.py
Download .txt
Showing preview only (655K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6484 symbols across 1014 files)

FILE: examples/async_demo.py
  function main (line 11) | async def main() -> None:

FILE: examples/audio.py
  function main (line 13) | def main() -> None:

FILE: examples/azure_ad.py
  function sync_main (line 17) | def sync_main() -> None:
  function async_main (line 41) | async def async_main() -> None:

FILE: examples/image_stream.py
  function main (line 11) | def main() -> None:

FILE: examples/parsing.py
  class Step (line 9) | class Step(BaseModel):
  class MathResponse (line 14) | class MathResponse(BaseModel):

FILE: examples/parsing_stream.py
  class Step (line 9) | class Step(BaseModel):
  class MathResponse (line 14) | class MathResponse(BaseModel):

FILE: examples/parsing_tools.py
  class Table (line 11) | class Table(str, Enum):
  class Column (line 17) | class Column(str, Enum):
  class Operator (line 27) | class Operator(str, Enum):
  class OrderBy (line 36) | class OrderBy(str, Enum):
  class DynamicValue (line 41) | class DynamicValue(BaseModel):
  class Condition (line 45) | class Condition(BaseModel):
  class Query (line 51) | class Query(BaseModel):

FILE: examples/parsing_tools_stream.py
  class GetWeather (line 10) | class GetWeather(BaseModel):

FILE: examples/picture.py
  function main (line 12) | def main() -> None:

FILE: examples/realtime/audio_util.py
  function audio_to_pcm16_base64 (line 24) | def audio_to_pcm16_base64(audio_bytes: bytes) -> bytes:
  class AudioPlayerAsync (line 33) | class AudioPlayerAsync:
    method __init__ (line 34) | def __init__(self):
    method callback (line 47) | def callback(self, outdata, frames, time, status):  # noqa
    method reset_frame_count (line 67) | def reset_frame_count(self):
    method get_frame_count (line 70) | def get_frame_count(self):
    method add_data (line 73) | def add_data(self, data: bytes):
    method start (line 81) | def start(self):
    method stop (line 85) | def stop(self):
    method terminate (line 91) | def terminate(self):
  function send_audio_worker_sounddevice (line 95) | async def send_audio_worker_sounddevice(

FILE: examples/realtime/azure_realtime.py
  function main (line 15) | async def main() -> None:

FILE: examples/realtime/push_to_talk_app.py
  class SessionDisplay (line 45) | class SessionDisplay(Static):
    method render (line 51) | def render(self) -> str:
  class AudioStatusIndicator (line 55) | class AudioStatusIndicator(Static):
    method render (line 61) | def render(self) -> str:
  class RealtimeApp (line 68) | class RealtimeApp(App[None]):
    method __init__ (line 134) | def __init__(self) -> None:
    method compose (line 145) | def compose(self) -> ComposeResult:
    method on_mount (line 152) | async def on_mount(self) -> None:
    method handle_realtime_connection (line 156) | async def handle_realtime_connection(self) -> None:
    method _get_connection (line 210) | async def _get_connection(self) -> AsyncRealtimeConnection:
    method send_mic_audio (line 215) | async def send_mic_audio(self) -> None:
    method on_key (line 259) | async def on_key(self, event: events.Key) -> None:

FILE: examples/realtime/realtime.py
  function main (line 13) | async def main() -> None:

FILE: examples/responses/background.py
  class Step (line 9) | class Step(BaseModel):
  class MathResponse (line 14) | class MathResponse(BaseModel):

FILE: examples/responses/background_async.py
  class Step (line 10) | class Step(BaseModel):
  class MathResponse (line 15) | class MathResponse(BaseModel):
  function main (line 20) | async def main() -> None:

FILE: examples/responses/background_streaming.py
  class Step (line 10) | class Step(BaseModel):
  class MathResponse (line 15) | class MathResponse(BaseModel):

FILE: examples/responses/background_streaming_async.py
  class Step (line 10) | class Step(BaseModel):
  class MathResponse (line 15) | class MathResponse(BaseModel):
  function main (line 20) | async def main() -> None:

FILE: examples/responses/streaming.py
  class Step (line 9) | class Step(BaseModel):
  class MathResponse (line 14) | class MathResponse(BaseModel):

FILE: examples/responses/streaming_tools.py
  class Table (line 11) | class Table(str, Enum):
  class Column (line 17) | class Column(str, Enum):
  class Operator (line 27) | class Operator(str, Enum):
  class OrderBy (line 36) | class OrderBy(str, Enum):
  class DynamicValue (line 41) | class DynamicValue(BaseModel):
  class Condition (line 45) | class Condition(BaseModel):
  class Query (line 51) | class Query(BaseModel):

FILE: examples/responses/structured_outputs.py
  class Step (line 9) | class Step(BaseModel):
  class MathResponse (line 14) | class MathResponse(BaseModel):

FILE: examples/responses/structured_outputs_tools.py
  class Table (line 11) | class Table(str, Enum):
  class Column (line 17) | class Column(str, Enum):
  class Operator (line 27) | class Operator(str, Enum):
  class OrderBy (line 36) | class OrderBy(str, Enum):
  class DynamicValue (line 41) | class DynamicValue(BaseModel):
  class Condition (line 45) | class Condition(BaseModel):
  class Query (line 51) | class Query(BaseModel):

FILE: examples/responses/websocket.py
  class DemoTurn (line 26) | class DemoTurn(TypedDict):
  class SKUArguments (line 31) | class SKUArguments(TypedDict):
  class SKUInventoryOutput (line 35) | class SKUInventoryOutput(TypedDict):
  class SupplierShipment (line 44) | class SupplierShipment(TypedDict):
  class SupplierETAOutput (line 51) | class SupplierETAOutput(TypedDict):
  class QualityAlert (line 56) | class QualityAlert(TypedDict):
  class QualityAlertsOutput (line 63) | class QualityAlertsOutput(TypedDict):
  class FunctionCallOutputItem (line 68) | class FunctionCallOutputItem(TypedDict):
  class FunctionCallRequest (line 74) | class FunctionCallRequest(NamedTuple):
  class RunResponseResult (line 80) | class RunResponseResult(NamedTuple):
  class RunTurnResult (line 86) | class RunTurnResult(NamedTuple):
  function parse_args (line 165) | def parse_args() -> argparse.Namespace:
  function parse_tool_name (line 188) | def parse_tool_name(name: str) -> ToolName:
  function parse_sku_arguments (line 194) | def parse_sku_arguments(raw_arguments: str) -> SKUArguments:
  function call_tool (line 207) | def call_tool(name: ToolName, arguments: SKUArguments) -> ToolOutput:
  function run_response (line 267) | def run_response(
  function run_turn (line 352) | def run_turn(
  function main (line 411) | def main() -> None:

FILE: examples/responses_input_tokens.py
  function main (line 8) | def main() -> None:

FILE: examples/speech_to_text.py
  function main (line 12) | async def main() -> None:

FILE: examples/streaming.py
  function sync_main (line 13) | def sync_main() -> None:
  function async_main (line 33) | async def async_main() -> None:

FILE: examples/text_to_speech.py
  function main (line 13) | async def main() -> None:

FILE: examples/uploads.py
  function from_disk (line 14) | def from_disk() -> None:
  function from_in_memory (line 25) | def from_in_memory() -> None:

FILE: examples/video.py
  function main (line 10) | async def main() -> None:

FILE: noxfile.py
  function test_pydantic_v1 (line 5) | def test_pydantic_v1(session: nox.Session) -> None:

FILE: scripts/detect-breaking-changes.py
  function public_members (line 13) | def public_members(obj: griffe.Object | griffe.Alias) -> dict[str, griff...
  function find_breaking_changes (line 23) | def find_breaking_changes(
  function main (line 50) | def main() -> None:

FILE: scripts/utils/ruffen-docs.py
  class CodeBlockError (line 28) | class CodeBlockError(NamedTuple):
  function format_str (line 33) | def format_str(
  function format_code_block (line 107) | def format_code_block(code: str) -> str:
  function format_file (line 122) | def format_file(
  function main (line 143) | def main(argv: Sequence[str] | None = None) -> int:

FILE: src/openai/__init__.py
  class _ModuleClient (line 155) | class _ModuleClient(OpenAI):
    method api_key (line 161) | def api_key(self) -> str | None:
    method api_key (line 165) | def api_key(self, value: str | None) -> None:  # type: ignore
    method organization (line 172) | def organization(self) -> str | None:
    method organization (line 176) | def organization(self, value: str | None) -> None:  # type: ignore
    method project (line 183) | def project(self) -> str | None:
    method project (line 187) | def project(self, value: str | None) -> None:  # type: ignore
    method webhook_secret (line 194) | def webhook_secret(self) -> str | None:
    method webhook_secret (line 198) | def webhook_secret(self, value: str | None) -> None:  # type: ignore
    method base_url (line 205) | def base_url(self) -> _httpx.URL:
    method base_url (line 212) | def base_url(self, url: _httpx.URL | str) -> None:
    method timeout (line 217) | def timeout(self) -> float | Timeout | None:
    method timeout (line 221) | def timeout(self, value: float | Timeout | None) -> None:  # type: ignore
    method max_retries (line 228) | def max_retries(self) -> int:
    method max_retries (line 232) | def max_retries(self, value: int) -> None:  # type: ignore
    method _custom_headers (line 239) | def _custom_headers(self) -> _t.Mapping[str, str] | None:
    method _custom_headers (line 243) | def _custom_headers(self, value: _t.Mapping[str, str] | None) -> None:...
    method _custom_query (line 250) | def _custom_query(self) -> _t.Mapping[str, object] | None:
    method _custom_query (line 254) | def _custom_query(self, value: _t.Mapping[str, object] | None) -> None...
    method _client (line 261) | def _client(self) -> _httpx.Client:
    method _client (line 265) | def _client(self, value: _httpx.Client) -> None:  # type: ignore
  class _AzureModuleClient (line 271) | class _AzureModuleClient(_ModuleClient, AzureOpenAI):  # type: ignore
  class _AmbiguousModuleClientUsageError (line 275) | class _AmbiguousModuleClientUsageError(OpenAIError):
    method __init__ (line 276) | def __init__(self) -> None:
  function _has_openai_credentials (line 282) | def _has_openai_credentials() -> bool:
  function _has_azure_credentials (line 286) | def _has_azure_credentials() -> bool:
  function _has_azure_ad_credentials (line 290) | def _has_azure_ad_credentials() -> bool:
  function _load_client (line 301) | def _load_client() -> OpenAI:  # type: ignore[reportUnusedFunction]
  function _reset_client (line 368) | def _reset_client() -> None:  # type: ignore[reportUnusedFunction]

FILE: src/openai/_base_client.py
  class PageInfo (line 120) | class PageInfo:
    method __init__ (line 131) | def __init__(
    method __init__ (line 138) | def __init__(
    method __init__ (line 145) | def __init__(
    method __init__ (line 151) | def __init__(
    method __repr__ (line 163) | def __repr__(self) -> str:
  class BasePage (line 171) | class BasePage(GenericModel, Generic[_T]):
    method has_next_page (line 186) | def has_next_page(self) -> bool:
    method next_page_info (line 192) | def next_page_info(self) -> Optional[PageInfo]: ...
    method _get_page_items (line 194) | def _get_page_items(self) -> Iterable[_T]:  # type: ignore[empty-body]
    method _params_from_url (line 197) | def _params_from_url(self, url: URL) -> httpx.QueryParams:
    method _info_to_options (line 201) | def _info_to_options(self, info: PageInfo) -> FinalRequestOptions:
  class BaseSyncPage (line 232) | class BaseSyncPage(BasePage[_T], Generic[_T]):
    method _set_private_attributes (line 235) | def _set_private_attributes(
    method __iter__ (line 256) | def __iter__(self) -> Iterator[_T]:  # type: ignore
    method iter_pages (line 261) | def iter_pages(self: SyncPageT) -> Iterator[SyncPageT]:
    method get_next_page (line 270) | def get_next_page(self: SyncPageT) -> SyncPageT:
  class AsyncPaginator (line 281) | class AsyncPaginator(Generic[_T, AsyncPageT]):
    method __init__ (line 282) | def __init__(
    method __await__ (line 294) | def __await__(self) -> Generator[Any, None, AsyncPageT]:
    method _get_page (line 297) | async def _get_page(self) -> AsyncPageT:
    method __aiter__ (line 310) | async def __aiter__(self) -> AsyncIterator[_T]:
  class BaseAsyncPage (line 320) | class BaseAsyncPage(BasePage[_T], Generic[_T]):
    method _set_private_attributes (line 323) | def _set_private_attributes(
    method __aiter__ (line 336) | async def __aiter__(self) -> AsyncIterator[_T]:
    method iter_pages (line 341) | async def iter_pages(self: AsyncPageT) -> AsyncIterator[AsyncPageT]:
    method get_next_page (line 350) | async def get_next_page(self: AsyncPageT) -> AsyncPageT:
  class BaseClient (line 365) | class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
    method __init__ (line 375) | def __init__(
    method _enforce_trailing_slash (line 401) | def _enforce_trailing_slash(self, url: URL) -> URL:
    method _make_status_error_from_response (line 406) | def _make_status_error_from_response(
    method _make_status_error (line 428) | def _make_status_error(
    method _build_headers (line 437) | def _build_headers(self, options: FinalRequestOptions, *, retries_take...
    method _prepare_url (line 463) | def _prepare_url(self, url: str) -> URL:
    method _make_sse_decoder (line 476) | def _make_sse_decoder(self) -> SSEDecoder | SSEBytesDecoder:
    method _build_request (line 479) | def _build_request(
    method _serialize_multipartform (line 583) | def _serialize_multipartform(self, data: Mapping[object, object]) -> d...
    method _maybe_override_cast_to (line 613) | def _maybe_override_cast_to(self, cast_to: type[ResponseT], options: F...
    method _should_stream_response_body (line 630) | def _should_stream_response_body(self, request: httpx.Request) -> bool:
    method _process_response_data (line 633) | def _process_response_data(
    method qs (line 658) | def qs(self) -> Querystring:
    method custom_auth (line 662) | def custom_auth(self) -> httpx.Auth | None:
    method auth_headers (line 666) | def auth_headers(self) -> dict[str, str]:
    method default_headers (line 670) | def default_headers(self) -> dict[str, str | Omit]:
    method default_query (line 681) | def default_query(self) -> dict[str, object]:
    method _validate_headers (line 686) | def _validate_headers(
    method user_agent (line 698) | def user_agent(self) -> str:
    method base_url (line 702) | def base_url(self) -> URL:
    method base_url (line 706) | def base_url(self, url: URL | str) -> None:
    method platform_headers (line 709) | def platform_headers(self) -> Dict[str, str]:
    method _parse_retry_after_header (line 715) | def _parse_retry_after_header(self, response_headers: Optional[httpx.H...
    method _calculate_retry_timeout (line 749) | def _calculate_retry_timeout(
    method _should_retry (line 773) | def _should_retry(self, response: httpx.Response) -> bool:
    method _idempotency_key (line 808) | def _idempotency_key(self) -> str:
  class _DefaultHttpxClient (line 812) | class _DefaultHttpxClient(httpx.Client):
    method __init__ (line 813) | def __init__(self, **kwargs: Any) -> None:
  class SyncHttpxClientWrapper (line 832) | class SyncHttpxClientWrapper(DefaultHttpxClient):
    method __del__ (line 833) | def __del__(self) -> None:
  class SyncAPIClient (line 843) | class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
    method __init__ (line 847) | def __init__(
    method is_closed (line 893) | def is_closed(self) -> bool:
    method close (line 896) | def close(self) -> None:
    method __enter__ (line 906) | def __enter__(self: _T) -> _T:
    method __exit__ (line 909) | def __exit__(
    method _prepare_options (line 917) | def _prepare_options(
    method _prepare_request (line 924) | def _prepare_request(
    method request (line 936) | def request(
    method request (line 946) | def request(
    method request (line 955) | def request(
    method request (line 964) | def request(
    method _sleep_for_retry (line 1084) | def _sleep_for_retry(
    method _process_response (line 1098) | def _process_response(
    method _request_api_list (line 1166) | def _request_api_list(
    method get (line 1185) | def get(
    method get (line 1195) | def get(
    method get (line 1206) | def get(
    method get (line 1216) | def get(
    method post (line 1231) | def post(
    method post (line 1244) | def post(
    method post (line 1258) | def post(
    method post (line 1271) | def post(
    method patch (line 1299) | def patch(
    method put (line 1325) | def put(
    method delete (line 1351) | def delete(
    method get_api_list (line 1372) | def get_api_list(
  class _DefaultAsyncHttpxClient (line 1386) | class _DefaultAsyncHttpxClient(httpx.AsyncClient):
    method __init__ (line 1387) | def __init__(self, **kwargs: Any) -> None:
  class _DefaultAioHttpClient (line 1398) | class _DefaultAioHttpClient(httpx.AsyncClient):
    method __init__ (line 1399) | def __init__(self, **_kwargs: Any) -> None:
    method __init__ (line 1404) | def __init__(self, **kwargs: Any) -> None:
  class _DefaultAioHttpClient (line 1403) | class _DefaultAioHttpClient(httpx_aiohttp.HttpxAiohttpClient):  # type: ...
    method __init__ (line 1399) | def __init__(self, **_kwargs: Any) -> None:
    method __init__ (line 1404) | def __init__(self, **kwargs: Any) -> None:
  class AsyncHttpxClientWrapper (line 1428) | class AsyncHttpxClientWrapper(DefaultAsyncHttpxClient):
    method __del__ (line 1429) | def __del__(self) -> None:
  class AsyncAPIClient (line 1440) | class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
    method __init__ (line 1444) | def __init__(
    method is_closed (line 1490) | def is_closed(self) -> bool:
    method close (line 1493) | async def close(self) -> None:
    method __aenter__ (line 1500) | async def __aenter__(self: _T) -> _T:
    method __aexit__ (line 1503) | async def __aexit__(
    method _prepare_options (line 1511) | async def _prepare_options(
    method _prepare_request (line 1518) | async def _prepare_request(
    method request (line 1530) | async def request(
    method request (line 1539) | async def request(
    method request (line 1549) | async def request(
    method request (line 1558) | async def request(
    method _sleep_for_retry (line 1683) | async def _sleep_for_retry(
    method _process_response (line 1697) | async def _process_response(
    method _request_api_list (line 1765) | def _request_api_list(
    method get (line 1774) | async def get(
    method get (line 1784) | async def get(
    method get (line 1795) | async def get(
    method get (line 1805) | async def get(
    method post (line 1818) | async def post(
    method post (line 1831) | async def post(
    method post (line 1845) | async def post(
    method post (line 1858) | async def post(
    method patch (line 1886) | async def patch(
    method put (line 1917) | async def put(
    method delete (line 1943) | async def delete(
    method get_api_list (line 1964) | def get_api_list(
  function make_request_options (line 1978) | def make_request_options(
  class ForceMultipartDict (line 2019) | class ForceMultipartDict(Dict[str, None]):
    method __bool__ (line 2020) | def __bool__(self) -> bool:
  class OtherPlatform (line 2024) | class OtherPlatform:
    method __init__ (line 2025) | def __init__(self, name: str) -> None:
    method __str__ (line 2029) | def __str__(self) -> str:
  function get_platform (line 2048) | def get_platform() -> Platform:
  function platform_headers (line 2091) | def platform_headers(version: str, *, platform: Platform | None) -> Dict...
  class OtherArch (line 2102) | class OtherArch:
    method __init__ (line 2103) | def __init__(self, name: str) -> None:
    method __str__ (line 2107) | def __str__(self) -> str:
  function get_python_runtime (line 2114) | def get_python_runtime() -> str:
  function get_python_version (line 2121) | def get_python_version() -> str:
  function get_architecture (line 2128) | def get_architecture() -> Arch:
  function _merge_mappings (line 2154) | def _merge_mappings(

FILE: src/openai/_client.py
  class OpenAI (line 86) | class OpenAI(SyncAPIClient):
    method __init__ (line 101) | def __init__(
    method completions (line 182) | def completions(self) -> Completions:
    method chat (line 191) | def chat(self) -> Chat:
    method embeddings (line 197) | def embeddings(self) -> Embeddings:
    method files (line 206) | def files(self) -> Files:
    method images (line 215) | def images(self) -> Images:
    method audio (line 222) | def audio(self) -> Audio:
    method moderations (line 228) | def moderations(self) -> Moderations:
    method models (line 237) | def models(self) -> Models:
    method fine_tuning (line 244) | def fine_tuning(self) -> FineTuning:
    method vector_stores (line 250) | def vector_stores(self) -> VectorStores:
    method webhooks (line 256) | def webhooks(self) -> Webhooks:
    method beta (line 262) | def beta(self) -> Beta:
    method batches (line 268) | def batches(self) -> Batches:
    method uploads (line 275) | def uploads(self) -> Uploads:
    method responses (line 282) | def responses(self) -> Responses:
    method realtime (line 288) | def realtime(self) -> Realtime:
    method conversations (line 294) | def conversations(self) -> Conversations:
    method evals (line 301) | def evals(self) -> Evals:
    method containers (line 308) | def containers(self) -> Containers:
    method skills (line 314) | def skills(self) -> Skills:
    method videos (line 320) | def videos(self) -> Videos:
    method with_raw_response (line 326) | def with_raw_response(self) -> OpenAIWithRawResponse:
    method with_streaming_response (line 330) | def with_streaming_response(self) -> OpenAIWithStreamedResponse:
    method qs (line 335) | def qs(self) -> Querystring:
    method _refresh_api_key (line 338) | def _refresh_api_key(self) -> None:
    method _prepare_options (line 343) | def _prepare_options(self, options: FinalRequestOptions) -> FinalReque...
    method auth_headers (line 349) | def auth_headers(self) -> dict[str, str]:
    method default_headers (line 358) | def default_headers(self) -> dict[str, str | Omit]:
    method copy (line 367) | def copy(
    method _make_status_error (line 427) | def _make_status_error(
  class AsyncOpenAI (line 461) | class AsyncOpenAI(AsyncAPIClient):
    method __init__ (line 476) | def __init__(
    method completions (line 557) | def completions(self) -> AsyncCompletions:
    method chat (line 566) | def chat(self) -> AsyncChat:
    method embeddings (line 572) | def embeddings(self) -> AsyncEmbeddings:
    method files (line 581) | def files(self) -> AsyncFiles:
    method images (line 590) | def images(self) -> AsyncImages:
    method audio (line 597) | def audio(self) -> AsyncAudio:
    method moderations (line 603) | def moderations(self) -> AsyncModerations:
    method models (line 612) | def models(self) -> AsyncModels:
    method fine_tuning (line 619) | def fine_tuning(self) -> AsyncFineTuning:
    method vector_stores (line 625) | def vector_stores(self) -> AsyncVectorStores:
    method webhooks (line 631) | def webhooks(self) -> AsyncWebhooks:
    method beta (line 637) | def beta(self) -> AsyncBeta:
    method batches (line 643) | def batches(self) -> AsyncBatches:
    method uploads (line 650) | def uploads(self) -> AsyncUploads:
    method responses (line 657) | def responses(self) -> AsyncResponses:
    method realtime (line 663) | def realtime(self) -> AsyncRealtime:
    method conversations (line 669) | def conversations(self) -> AsyncConversations:
    method evals (line 676) | def evals(self) -> AsyncEvals:
    method containers (line 683) | def containers(self) -> AsyncContainers:
    method skills (line 689) | def skills(self) -> AsyncSkills:
    method videos (line 695) | def videos(self) -> AsyncVideos:
    method with_raw_response (line 701) | def with_raw_response(self) -> AsyncOpenAIWithRawResponse:
    method with_streaming_response (line 705) | def with_streaming_response(self) -> AsyncOpenAIWithStreamedResponse:
    method qs (line 710) | def qs(self) -> Querystring:
    method _refresh_api_key (line 713) | async def _refresh_api_key(self) -> None:
    method _prepare_options (line 718) | async def _prepare_options(self, options: FinalRequestOptions) -> Fina...
    method auth_headers (line 724) | def auth_headers(self) -> dict[str, str]:
    method default_headers (line 733) | def default_headers(self) -> dict[str, str | Omit]:
    method copy (line 742) | def copy(
    method _make_status_error (line 802) | def _make_status_error(
  class OpenAIWithRawResponse (line 836) | class OpenAIWithRawResponse:
    method __init__ (line 839) | def __init__(self, client: OpenAI) -> None:
    method completions (line 843) | def completions(self) -> completions.CompletionsWithRawResponse:
    method chat (line 852) | def chat(self) -> chat.ChatWithRawResponse:
    method embeddings (line 858) | def embeddings(self) -> embeddings.EmbeddingsWithRawResponse:
    method files (line 867) | def files(self) -> files.FilesWithRawResponse:
    method images (line 876) | def images(self) -> images.ImagesWithRawResponse:
    method audio (line 883) | def audio(self) -> audio.AudioWithRawResponse:
    method moderations (line 889) | def moderations(self) -> moderations.ModerationsWithRawResponse:
    method models (line 898) | def models(self) -> models.ModelsWithRawResponse:
    method fine_tuning (line 905) | def fine_tuning(self) -> fine_tuning.FineTuningWithRawResponse:
    method vector_stores (line 911) | def vector_stores(self) -> vector_stores.VectorStoresWithRawResponse:
    method beta (line 917) | def beta(self) -> beta.BetaWithRawResponse:
    method batches (line 923) | def batches(self) -> batches.BatchesWithRawResponse:
    method uploads (line 930) | def uploads(self) -> uploads.UploadsWithRawResponse:
    method responses (line 937) | def responses(self) -> responses.ResponsesWithRawResponse:
    method realtime (line 943) | def realtime(self) -> realtime.RealtimeWithRawResponse:
    method conversations (line 949) | def conversations(self) -> conversations.ConversationsWithRawResponse:
    method evals (line 956) | def evals(self) -> evals.EvalsWithRawResponse:
    method containers (line 963) | def containers(self) -> containers.ContainersWithRawResponse:
    method skills (line 969) | def skills(self) -> skills.SkillsWithRawResponse:
    method videos (line 975) | def videos(self) -> videos.VideosWithRawResponse:
  class AsyncOpenAIWithRawResponse (line 981) | class AsyncOpenAIWithRawResponse:
    method __init__ (line 984) | def __init__(self, client: AsyncOpenAI) -> None:
    method completions (line 988) | def completions(self) -> completions.AsyncCompletionsWithRawResponse:
    method chat (line 997) | def chat(self) -> chat.AsyncChatWithRawResponse:
    method embeddings (line 1003) | def embeddings(self) -> embeddings.AsyncEmbeddingsWithRawResponse:
    method files (line 1012) | def files(self) -> files.AsyncFilesWithRawResponse:
    method images (line 1021) | def images(self) -> images.AsyncImagesWithRawResponse:
    method audio (line 1028) | def audio(self) -> audio.AsyncAudioWithRawResponse:
    method moderations (line 1034) | def moderations(self) -> moderations.AsyncModerationsWithRawResponse:
    method models (line 1043) | def models(self) -> models.AsyncModelsWithRawResponse:
    method fine_tuning (line 1050) | def fine_tuning(self) -> fine_tuning.AsyncFineTuningWithRawResponse:
    method vector_stores (line 1056) | def vector_stores(self) -> vector_stores.AsyncVectorStoresWithRawRespo...
    method beta (line 1062) | def beta(self) -> beta.AsyncBetaWithRawResponse:
    method batches (line 1068) | def batches(self) -> batches.AsyncBatchesWithRawResponse:
    method uploads (line 1075) | def uploads(self) -> uploads.AsyncUploadsWithRawResponse:
    method responses (line 1082) | def responses(self) -> responses.AsyncResponsesWithRawResponse:
    method realtime (line 1088) | def realtime(self) -> realtime.AsyncRealtimeWithRawResponse:
    method conversations (line 1094) | def conversations(self) -> conversations.AsyncConversationsWithRawResp...
    method evals (line 1101) | def evals(self) -> evals.AsyncEvalsWithRawResponse:
    method containers (line 1108) | def containers(self) -> containers.AsyncContainersWithRawResponse:
    method skills (line 1114) | def skills(self) -> skills.AsyncSkillsWithRawResponse:
    method videos (line 1120) | def videos(self) -> videos.AsyncVideosWithRawResponse:
  class OpenAIWithStreamedResponse (line 1126) | class OpenAIWithStreamedResponse:
    method __init__ (line 1129) | def __init__(self, client: OpenAI) -> None:
    method completions (line 1133) | def completions(self) -> completions.CompletionsWithStreamingResponse:
    method chat (line 1142) | def chat(self) -> chat.ChatWithStreamingResponse:
    method embeddings (line 1148) | def embeddings(self) -> embeddings.EmbeddingsWithStreamingResponse:
    method files (line 1157) | def files(self) -> files.FilesWithStreamingResponse:
    method images (line 1166) | def images(self) -> images.ImagesWithStreamingResponse:
    method audio (line 1173) | def audio(self) -> audio.AudioWithStreamingResponse:
    method moderations (line 1179) | def moderations(self) -> moderations.ModerationsWithStreamingResponse:
    method models (line 1188) | def models(self) -> models.ModelsWithStreamingResponse:
    method fine_tuning (line 1195) | def fine_tuning(self) -> fine_tuning.FineTuningWithStreamingResponse:
    method vector_stores (line 1201) | def vector_stores(self) -> vector_stores.VectorStoresWithStreamingResp...
    method beta (line 1207) | def beta(self) -> beta.BetaWithStreamingResponse:
    method batches (line 1213) | def batches(self) -> batches.BatchesWithStreamingResponse:
    method uploads (line 1220) | def uploads(self) -> uploads.UploadsWithStreamingResponse:
    method responses (line 1227) | def responses(self) -> responses.ResponsesWithStreamingResponse:
    method realtime (line 1233) | def realtime(self) -> realtime.RealtimeWithStreamingResponse:
    method conversations (line 1239) | def conversations(self) -> conversations.ConversationsWithStreamingRes...
    method evals (line 1246) | def evals(self) -> evals.EvalsWithStreamingResponse:
    method containers (line 1253) | def containers(self) -> containers.ContainersWithStreamingResponse:
    method skills (line 1259) | def skills(self) -> skills.SkillsWithStreamingResponse:
    method videos (line 1265) | def videos(self) -> videos.VideosWithStreamingResponse:
  class AsyncOpenAIWithStreamedResponse (line 1271) | class AsyncOpenAIWithStreamedResponse:
    method __init__ (line 1274) | def __init__(self, client: AsyncOpenAI) -> None:
    method completions (line 1278) | def completions(self) -> completions.AsyncCompletionsWithStreamingResp...
    method chat (line 1287) | def chat(self) -> chat.AsyncChatWithStreamingResponse:
    method embeddings (line 1293) | def embeddings(self) -> embeddings.AsyncEmbeddingsWithStreamingResponse:
    method files (line 1302) | def files(self) -> files.AsyncFilesWithStreamingResponse:
    method images (line 1311) | def images(self) -> images.AsyncImagesWithStreamingResponse:
    method audio (line 1318) | def audio(self) -> audio.AsyncAudioWithStreamingResponse:
    method moderations (line 1324) | def moderations(self) -> moderations.AsyncModerationsWithStreamingResp...
    method models (line 1333) | def models(self) -> models.AsyncModelsWithStreamingResponse:
    method fine_tuning (line 1340) | def fine_tuning(self) -> fine_tuning.AsyncFineTuningWithStreamingRespo...
    method vector_stores (line 1346) | def vector_stores(self) -> vector_stores.AsyncVectorStoresWithStreamin...
    method beta (line 1352) | def beta(self) -> beta.AsyncBetaWithStreamingResponse:
    method batches (line 1358) | def batches(self) -> batches.AsyncBatchesWithStreamingResponse:
    method uploads (line 1365) | def uploads(self) -> uploads.AsyncUploadsWithStreamingResponse:
    method responses (line 1372) | def responses(self) -> responses.AsyncResponsesWithStreamingResponse:
    method realtime (line 1378) | def realtime(self) -> realtime.AsyncRealtimeWithStreamingResponse:
    method conversations (line 1384) | def conversations(self) -> conversations.AsyncConversationsWithStreami...
    method evals (line 1391) | def evals(self) -> evals.AsyncEvalsWithStreamingResponse:
    method containers (line 1398) | def containers(self) -> containers.AsyncContainersWithStreamingResponse:
    method skills (line 1404) | def skills(self) -> skills.AsyncSkillsWithStreamingResponse:
    method videos (line 1410) | def videos(self) -> videos.AsyncVideosWithStreamingResponse:

FILE: src/openai/_compat.py
  function parse_date (line 24) | def parse_date(value: date | StrBytesIntFloat) -> date:  # noqa: ARG001
  function parse_datetime (line 27) | def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime...
  function get_args (line 30) | def get_args(t: type[Any]) -> tuple[Any, ...]:  # noqa: ARG001
  function is_union (line 33) | def is_union(tp: type[Any] | None) -> bool:  # noqa: ARG001
  function get_origin (line 36) | def get_origin(t: type[Any]) -> type[Any] | None:  # noqa: ARG001
  function is_literal_type (line 39) | def is_literal_type(type_: type[Any]) -> bool:  # noqa: ARG001
  function is_typeddict (line 42) | def is_typeddict(type_: type[Any]) -> bool:  # noqa: ARG001
  function parse_obj (line 80) | def parse_obj(model: type[_ModelT], value: object) -> _ModelT:
  function field_is_required (line 87) | def field_is_required(field: FieldInfo) -> bool:
  function field_get_default (line 93) | def field_get_default(field: FieldInfo) -> Any:
  function field_outer_type (line 104) | def field_outer_type(field: FieldInfo) -> Any:
  function get_model_config (line 110) | def get_model_config(model: type[pydantic.BaseModel]) -> Any:
  function get_model_fields (line 116) | def get_model_fields(model: type[pydantic.BaseModel]) -> dict[str, Field...
  function model_copy (line 122) | def model_copy(model: _ModelT, *, deep: bool = False) -> _ModelT:
  function model_json (line 128) | def model_json(model: pydantic.BaseModel, *, indent: int | None = None) ...
  class _ModelDumpKwargs (line 134) | class _ModelDumpKwargs(TypedDict, total=False):
  function model_dump (line 138) | def model_dump(
  function model_parse (line 169) | def model_parse(model: type[_ModelT], data: Any) -> _ModelT:
  function model_parse_json (line 175) | def model_parse_json(model: type[_ModelT], data: str | bytes) -> _ModelT:
  function model_json_schema (line 181) | def model_json_schema(model: type[_ModelT]) -> dict[str, Any]:
  class GenericModel (line 190) | class GenericModel(pydantic.BaseModel): ...
  class GenericModel (line 196) | class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel): ...
  class GenericModel (line 201) | class GenericModel(pydantic.BaseModel): ...
  class typed_cached_property (line 216) | class typed_cached_property(Generic[_T]):
    method __init__ (line 220) | def __init__(self, func: Callable[[Any], _T]) -> None: ...
    method __get__ (line 223) | def __get__(self, instance: None, owner: type[Any] | None = None) -> S...
    method __get__ (line 226) | def __get__(self, instance: object, owner: type[Any] | None = None) ->...
    method __get__ (line 228) | def __get__(self, instance: object, owner: type[Any] | None = None) ->...
    method __set_name__ (line 231) | def __set_name__(self, owner: type[Any], name: str) -> None: ...
    method __set__ (line 234) | def __set__(self, instance: object, value: _T) -> None: ...

FILE: src/openai/_exceptions.py
  class OpenAIError (line 31) | class OpenAIError(Exception):
  class APIError (line 35) | class APIError(OpenAIError):
    method __init__ (line 54) | def __init__(self, message: str, request: httpx.Request, *, body: obje...
  class APIResponseValidationError (line 70) | class APIResponseValidationError(APIError):
    method __init__ (line 74) | def __init__(self, response: httpx.Response, body: object | None, *, m...
  class APIStatusError (line 80) | class APIStatusError(APIError):
    method __init__ (line 87) | def __init__(self, message: str, *, response: httpx.Response, body: ob...
  class APIConnectionError (line 94) | class APIConnectionError(APIError):
    method __init__ (line 95) | def __init__(self, *, message: str = "Connection error.", request: htt...
  class APITimeoutError (line 99) | class APITimeoutError(APIConnectionError):
    method __init__ (line 100) | def __init__(self, request: httpx.Request) -> None:
  class BadRequestError (line 104) | class BadRequestError(APIStatusError):
  class AuthenticationError (line 108) | class AuthenticationError(APIStatusError):
  class PermissionDeniedError (line 112) | class PermissionDeniedError(APIStatusError):
  class NotFoundError (line 116) | class NotFoundError(APIStatusError):
  class ConflictError (line 120) | class ConflictError(APIStatusError):
  class UnprocessableEntityError (line 124) | class UnprocessableEntityError(APIStatusError):
  class RateLimitError (line 128) | class RateLimitError(APIStatusError):
  class InternalServerError (line 132) | class InternalServerError(APIStatusError):
  class LengthFinishReasonError (line 136) | class LengthFinishReasonError(OpenAIError):
    method __init__ (line 144) | def __init__(self, *, completion: ChatCompletion) -> None:
  class ContentFilterFinishReasonError (line 153) | class ContentFilterFinishReasonError(OpenAIError):
    method __init__ (line 154) | def __init__(self) -> None:
  class InvalidWebhookSignatureError (line 160) | class InvalidWebhookSignatureError(ValueError):

FILE: src/openai/_extras/_common.py
  function format_instructions (line 16) | def format_instructions(*, library: str, extra: str) -> str:
  class MissingDependencyError (line 20) | class MissingDependencyError(OpenAIError):

FILE: src/openai/_extras/numpy_proxy.py
  class NumpyProxy (line 16) | class NumpyProxy(LazyProxy[Any]):
    method __load__ (line 18) | def __load__(self) -> Any:
  function has_numpy (line 31) | def has_numpy() -> bool:

FILE: src/openai/_extras/pandas_proxy.py
  class PandasProxy (line 16) | class PandasProxy(LazyProxy[Any]):
    method __load__ (line 18) | def __load__(self) -> Any:

FILE: src/openai/_extras/sounddevice_proxy.py
  class SounddeviceProxy (line 16) | class SounddeviceProxy(LazyProxy[Any]):
    method __load__ (line 18) | def __load__(self) -> Any:

FILE: src/openai/_files.py
  function is_base64_file_input (line 23) | def is_base64_file_input(obj: object) -> TypeGuard[Base64FileInput]:
  function is_file_content (line 27) | def is_file_content(obj: object) -> TypeGuard[FileContent]:
  function assert_is_file_content (line 33) | def assert_is_file_content(obj: object, *, key: str | None = None) -> None:
  function to_httpx_files (line 42) | def to_httpx_files(files: None) -> None: ...
  function to_httpx_files (line 46) | def to_httpx_files(files: RequestFiles) -> HttpxRequestFiles: ...
  function to_httpx_files (line 49) | def to_httpx_files(files: RequestFiles | None) -> HttpxRequestFiles | None:
  function _transform_file (line 63) | def _transform_file(file: FileTypes) -> HttpxFileTypes:
  function read_file_content (line 77) | def read_file_content(file: FileContent) -> HttpxFileContent:
  function async_to_httpx_files (line 84) | async def async_to_httpx_files(files: None) -> None: ...
  function async_to_httpx_files (line 88) | async def async_to_httpx_files(files: RequestFiles) -> HttpxRequestFiles...
  function async_to_httpx_files (line 91) | async def async_to_httpx_files(files: RequestFiles | None) -> HttpxReque...
  function _async_transform_file (line 105) | async def _async_transform_file(file: FileTypes) -> HttpxFileTypes:
  function async_read_file_content (line 119) | async def async_read_file_content(file: FileContent) -> HttpxFileContent:

FILE: src/openai/_legacy_response.py
  class LegacyAPIResponse (line 45) | class LegacyAPIResponse(Generic[R]):
    method __init__ (line 70) | def __init__(
    method request_id (line 91) | def request_id(self) -> str | None:
    method parse (line 95) | def parse(self, *, to: type[_T]) -> _T: ...
    method parse (line 98) | def parse(self) -> R: ...
    method parse (line 100) | def parse(self, *, to: type[_T] | None = None) -> R | _T:
    method headers (line 148) | def headers(self) -> httpx.Headers:
    method http_request (line 152) | def http_request(self) -> httpx.Request:
    method status_code (line 156) | def status_code(self) -> int:
    method url (line 160) | def url(self) -> httpx.URL:
    method method (line 164) | def method(self) -> str:
    method content (line 168) | def content(self) -> bytes:
    method text (line 177) | def text(self) -> str:
    method http_version (line 185) | def http_version(self) -> str:
    method is_closed (line 189) | def is_closed(self) -> bool:
    method elapsed (line 193) | def elapsed(self) -> datetime.timedelta:
    method _parse (line 197) | def _parse(self, *, to: type[_T] | None = None) -> R | _T:
    method __repr__ (line 344) | def __repr__(self) -> str:
  class MissingStreamClassError (line 348) | class MissingStreamClassError(TypeError):
    method __init__ (line 349) | def __init__(self) -> None:
  function to_raw_response_wrapper (line 355) | def to_raw_response_wrapper(func: Callable[P, R]) -> Callable[P, LegacyA...
  function async_to_raw_response_wrapper (line 372) | def async_to_raw_response_wrapper(func: Callable[P, Awaitable[R]]) -> Ca...
  class HttpxBinaryResponseContent (line 389) | class HttpxBinaryResponseContent:
    method __init__ (line 392) | def __init__(self, response: httpx.Response) -> None:
    method content (line 396) | def content(self) -> bytes:
    method text (line 400) | def text(self) -> str:
    method encoding (line 404) | def encoding(self) -> str | None:
    method charset_encoding (line 408) | def charset_encoding(self) -> str | None:
    method json (line 411) | def json(self, **kwargs: Any) -> Any:
    method read (line 414) | def read(self) -> bytes:
    method iter_bytes (line 417) | def iter_bytes(self, chunk_size: int | None = None) -> Iterator[bytes]:
    method iter_text (line 420) | def iter_text(self, chunk_size: int | None = None) -> Iterator[str]:
    method iter_lines (line 423) | def iter_lines(self) -> Iterator[str]:
    method iter_raw (line 426) | def iter_raw(self, chunk_size: int | None = None) -> Iterator[bytes]:
    method write_to_file (line 429) | def write_to_file(
    method stream_to_file (line 448) | def stream_to_file(
    method close (line 458) | def close(self) -> None:
    method aread (line 461) | async def aread(self) -> bytes:
    method aiter_bytes (line 464) | async def aiter_bytes(self, chunk_size: int | None = None) -> AsyncIte...
    method aiter_text (line 467) | async def aiter_text(self, chunk_size: int | None = None) -> AsyncIter...
    method aiter_lines (line 470) | async def aiter_lines(self) -> AsyncIterator[str]:
    method aiter_raw (line 473) | async def aiter_raw(self, chunk_size: int | None = None) -> AsyncItera...
    method astream_to_file (line 479) | async def astream_to_file(
    method aclose (line 490) | async def aclose(self) -> None:

FILE: src/openai/_models.py
  class _ConfigProtocol (line 97) | class _ConfigProtocol(Protocol):
  class BaseModel (line 101) | class BaseModel(pydantic.BaseModel):
    method model_fields_set (line 106) | def model_fields_set(self) -> set[str]:
    class Config (line 110) | class Config(pydantic.BaseConfig):  # pyright: ignore[reportDeprecated]
    method __repr_args__ (line 114) | def __repr_args__(self) -> ReprArgs:
    method to_dict (line 139) | def to_dict(
    method to_json (line 177) | def to_json(
    method __str__ (line 213) | def __str__(self) -> str:
    method construct (line 221) | def construct(  # pyright: ignore[reportIncompatibleMethodOverride]
    method model_dump (line 293) | def model_dump(
    method model_dump_json (line 364) | def model_dump_json(
  function _construct_field (line 425) | def _construct_field(value: object, field: FieldInfo, key: str) -> object:
  function _get_extra_fields_type (line 440) | def _get_extra_fields_type(cls: type[pydantic.BaseModel]) -> type | None:
  function is_basemodel (line 457) | def is_basemodel(type_: type) -> bool:
  function is_basemodel_type (line 469) | def is_basemodel_type(type_: type) -> TypeGuard[type[BaseModel] | type[G...
  function build (line 476) | def build(
  function construct_type_unchecked (line 499) | def construct_type_unchecked(*, value: object, type_: type[_T]) -> _T:
  function construct_type (line 508) | def construct_type(*, value: object, type_: object, metadata: Optional[L...
  class CachedDiscriminatorType (line 629) | class CachedDiscriminatorType(Protocol):
  class DiscriminatorDetails (line 636) | class DiscriminatorDetails:
    method __init__ (line 665) | def __init__(
  function _build_discriminated_union_meta (line 677) | def _build_discriminated_union_meta(*, union: type, meta_annotations: tu...
  function _extract_field_schema_pv2 (line 737) | def _extract_field_schema_pv2(model: type[BaseModel], field_name: str) -...
  function validate_type (line 758) | def validate_type(*, type_: type[_T], value: object) -> _T:
  function set_pydantic_config (line 766) | def set_pydantic_config(typ: Any, config: pydantic.ConfigDict) -> None:
  function add_request_id (line 774) | def add_request_id(obj: BaseModel, request_id: str | None) -> None:
  class GenericModel (line 795) | class GenericModel(BaseGenericModel, BaseModel):
  function _validate_non_model_type (line 809) | def _validate_non_model_type(*, type_: type[_T], value: object) -> _T:
  class RootModel (line 814) | class RootModel(GenericModel, Generic[_T]):
  function _validate_non_model_type (line 827) | def _validate_non_model_type(*, type_: type[_T], value: object) -> _T:
  function _create_pydantic_model (line 831) | def _create_pydantic_model(type_: _T) -> Type[RootModel[_T]]:
  class FinalRequestOptionsInput (line 835) | class FinalRequestOptionsInput(TypedDict, total=False):
  class FinalRequestOptions (line 852) | class FinalRequestOptions(pydantic.BaseModel):
    class Config (line 873) | class Config(pydantic.BaseConfig):  # pyright: ignore[reportDeprecated]
    method get_max_retries (line 878) | def get_max_retries(self, max_retries: int) -> int:
    method _strip_raw_response_header (line 883) | def _strip_raw_response_header(self) -> None:
    method construct (line 898) | def construct(  # type: ignore

FILE: src/openai/_module_client.py
  class ChatProxy (line 35) | class ChatProxy(LazyProxy["Chat"]):
    method __load__ (line 37) | def __load__(self) -> Chat:
  class BetaProxy (line 41) | class BetaProxy(LazyProxy["Beta"]):
    method __load__ (line 43) | def __load__(self) -> Beta:
  class FilesProxy (line 47) | class FilesProxy(LazyProxy["Files"]):
    method __load__ (line 49) | def __load__(self) -> Files:
  class AudioProxy (line 53) | class AudioProxy(LazyProxy["Audio"]):
    method __load__ (line 55) | def __load__(self) -> Audio:
  class EvalsProxy (line 59) | class EvalsProxy(LazyProxy["Evals"]):
    method __load__ (line 61) | def __load__(self) -> Evals:
  class ImagesProxy (line 65) | class ImagesProxy(LazyProxy["Images"]):
    method __load__ (line 67) | def __load__(self) -> Images:
  class ModelsProxy (line 71) | class ModelsProxy(LazyProxy["Models"]):
    method __load__ (line 73) | def __load__(self) -> Models:
  class SkillsProxy (line 77) | class SkillsProxy(LazyProxy["Skills"]):
    method __load__ (line 79) | def __load__(self) -> Skills:
  class VideosProxy (line 83) | class VideosProxy(LazyProxy["Videos"]):
    method __load__ (line 85) | def __load__(self) -> Videos:
  class BatchesProxy (line 89) | class BatchesProxy(LazyProxy["Batches"]):
    method __load__ (line 91) | def __load__(self) -> Batches:
  class UploadsProxy (line 95) | class UploadsProxy(LazyProxy["Uploads"]):
    method __load__ (line 97) | def __load__(self) -> Uploads:
  class WebhooksProxy (line 101) | class WebhooksProxy(LazyProxy["Webhooks"]):
    method __load__ (line 103) | def __load__(self) -> Webhooks:
  class RealtimeProxy (line 107) | class RealtimeProxy(LazyProxy["Realtime"]):
    method __load__ (line 109) | def __load__(self) -> Realtime:
  class ResponsesProxy (line 113) | class ResponsesProxy(LazyProxy["Responses"]):
    method __load__ (line 115) | def __load__(self) -> Responses:
  class EmbeddingsProxy (line 119) | class EmbeddingsProxy(LazyProxy["Embeddings"]):
    method __load__ (line 121) | def __load__(self) -> Embeddings:
  class ContainersProxy (line 125) | class ContainersProxy(LazyProxy["Containers"]):
    method __load__ (line 127) | def __load__(self) -> Containers:
  class CompletionsProxy (line 131) | class CompletionsProxy(LazyProxy["Completions"]):
    method __load__ (line 133) | def __load__(self) -> Completions:
  class ModerationsProxy (line 137) | class ModerationsProxy(LazyProxy["Moderations"]):
    method __load__ (line 139) | def __load__(self) -> Moderations:
  class FineTuningProxy (line 143) | class FineTuningProxy(LazyProxy["FineTuning"]):
    method __load__ (line 145) | def __load__(self) -> FineTuning:
  class VectorStoresProxy (line 149) | class VectorStoresProxy(LazyProxy["VectorStores"]):
    method __load__ (line 151) | def __load__(self) -> VectorStores:
  class ConversationsProxy (line 155) | class ConversationsProxy(LazyProxy["Conversations"]):
    method __load__ (line 157) | def __load__(self) -> Conversations:

FILE: src/openai/_qs.py
  class Querystring (line 23) | class Querystring:
    method __init__ (line 27) | def __init__(
    method parse (line 36) | def parse(self, query: str) -> Mapping[str, object]:
    method stringify (line 40) | def stringify(
    method stringify_items (line 55) | def stringify_items(
    method _stringify_item (line 69) | def _stringify_item(
    method _primitive_value_to_str (line 121) | def _primitive_value_to_str(self, value: PrimitiveData) -> str:
  class Options (line 138) | class Options:
    method __init__ (line 142) | def __init__(

FILE: src/openai/_resource.py
  class SyncAPIResource (line 14) | class SyncAPIResource:
    method __init__ (line 17) | def __init__(self, client: OpenAI) -> None:
    method _sleep (line 26) | def _sleep(self, seconds: float) -> None:
  class AsyncAPIResource (line 30) | class AsyncAPIResource:
    method __init__ (line 33) | def __init__(self, client: AsyncOpenAI) -> None:
    method _sleep (line 42) | async def _sleep(self, seconds: float) -> None:

FILE: src/openai/_response.py
  class BaseAPIResponse (line 48) | class BaseAPIResponse(Generic[R]):
    method __init__ (line 61) | def __init__(
    method headers (line 82) | def headers(self) -> httpx.Headers:
    method http_request (line 86) | def http_request(self) -> httpx.Request:
    method status_code (line 91) | def status_code(self) -> int:
    method url (line 95) | def url(self) -> httpx.URL:
    method method (line 100) | def method(self) -> str:
    method http_version (line 104) | def http_version(self) -> str:
    method elapsed (line 108) | def elapsed(self) -> datetime.timedelta:
    method is_closed (line 113) | def is_closed(self) -> bool:
    method __repr__ (line 123) | def __repr__(self) -> str:
    method _parse (line 128) | def _parse(self, *, to: type[_T] | None = None) -> R | _T:
  class APIResponse (line 277) | class APIResponse(BaseAPIResponse[R]):
    method request_id (line 279) | def request_id(self) -> str | None:
    method parse (line 283) | def parse(self, *, to: type[_T]) -> _T: ...
    method parse (line 286) | def parse(self) -> R: ...
    method parse (line 288) | def parse(self, *, to: type[_T] | None = None) -> R | _T:
    method read (line 336) | def read(self) -> bytes:
    method text (line 346) | def text(self) -> str:
    method json (line 351) | def json(self) -> object:
    method close (line 356) | def close(self) -> None:
    method iter_bytes (line 363) | def iter_bytes(self, chunk_size: int | None = None) -> Iterator[bytes]:
    method iter_text (line 372) | def iter_text(self, chunk_size: int | None = None) -> Iterator[str]:
    method iter_lines (line 380) | def iter_lines(self) -> Iterator[str]:
  class AsyncAPIResponse (line 386) | class AsyncAPIResponse(BaseAPIResponse[R]):
    method request_id (line 388) | def request_id(self) -> str | None:
    method parse (line 392) | async def parse(self, *, to: type[_T]) -> _T: ...
    method parse (line 395) | async def parse(self) -> R: ...
    method parse (line 397) | async def parse(self, *, to: type[_T] | None = None) -> R | _T:
    method read (line 443) | async def read(self) -> bytes:
    method text (line 453) | async def text(self) -> str:
    method json (line 458) | async def json(self) -> object:
    method close (line 463) | async def close(self) -> None:
    method iter_bytes (line 470) | async def iter_bytes(self, chunk_size: int | None = None) -> AsyncIter...
    method iter_text (line 479) | async def iter_text(self, chunk_size: int | None = None) -> AsyncItera...
    method iter_lines (line 487) | async def iter_lines(self) -> AsyncIterator[str]:
  class BinaryAPIResponse (line 493) | class BinaryAPIResponse(APIResponse[bytes]):
    method write_to_file (line 501) | def write_to_file(
  class AsyncBinaryAPIResponse (line 518) | class AsyncBinaryAPIResponse(AsyncAPIResponse[bytes]):
    method write_to_file (line 526) | async def write_to_file(
  class StreamedBinaryAPIResponse (line 544) | class StreamedBinaryAPIResponse(APIResponse[bytes]):
    method stream_to_file (line 545) | def stream_to_file(
  class AsyncStreamedBinaryAPIResponse (line 560) | class AsyncStreamedBinaryAPIResponse(AsyncAPIResponse[bytes]):
    method stream_to_file (line 561) | async def stream_to_file(
  class MissingStreamClassError (line 577) | class MissingStreamClassError(TypeError):
    method __init__ (line 578) | def __init__(self) -> None:
  class StreamAlreadyConsumed (line 584) | class StreamAlreadyConsumed(OpenAIError):
    method __init__ (line 605) | def __init__(self) -> None:
  class ResponseContextManager (line 618) | class ResponseContextManager(Generic[_APIResponseT]):
    method __init__ (line 624) | def __init__(self, request_func: Callable[[], _APIResponseT]) -> None:
    method __enter__ (line 628) | def __enter__(self) -> _APIResponseT:
    method __exit__ (line 632) | def __exit__(
  class AsyncResponseContextManager (line 642) | class AsyncResponseContextManager(Generic[_AsyncAPIResponseT]):
    method __init__ (line 648) | def __init__(self, api_request: Awaitable[_AsyncAPIResponseT]) -> None:
    method __aenter__ (line 652) | async def __aenter__(self) -> _AsyncAPIResponseT:
    method __aexit__ (line 656) | async def __aexit__(
  function to_streamed_response_wrapper (line 666) | def to_streamed_response_wrapper(func: Callable[P, R]) -> Callable[P, Re...
  function async_to_streamed_response_wrapper (line 685) | def async_to_streamed_response_wrapper(
  function to_custom_streamed_response_wrapper (line 706) | def to_custom_streamed_response_wrapper(
  function async_to_custom_streamed_response_wrapper (line 731) | def async_to_custom_streamed_response_wrapper(
  function to_raw_response_wrapper (line 756) | def to_raw_response_wrapper(func: Callable[P, R]) -> Callable[P, APIResp...
  function async_to_raw_response_wrapper (line 773) | def async_to_raw_response_wrapper(func: Callable[P, Awaitable[R]]) -> Ca...
  function to_custom_raw_response_wrapper (line 790) | def to_custom_raw_response_wrapper(
  function async_to_custom_raw_response_wrapper (line 813) | def async_to_custom_raw_response_wrapper(
  function extract_response_type (line 836) | def extract_response_type(typ: type[BaseAPIResponse[Any]]) -> type:

FILE: src/openai/_streaming.py
  class Stream (line 23) | class Stream(Generic[_T]):
    method __init__ (line 30) | def __init__(
    method __next__ (line 45) | def __next__(self) -> _T:
    method __iter__ (line 48) | def __iter__(self) -> Iterator[_T]:
    method _iter_events (line 52) | def _iter_events(self) -> Iterator[ServerSentEvent]:
    method __stream__ (line 55) | def __stream__(self) -> Iterator[_T]:
    method __enter__ (line 112) | def __enter__(self) -> Self:
    method __exit__ (line 115) | def __exit__(
    method close (line 123) | def close(self) -> None:
  class AsyncStream (line 132) | class AsyncStream(Generic[_T]):
    method __init__ (line 139) | def __init__(
    method __anext__ (line 154) | async def __anext__(self) -> _T:
    method __aiter__ (line 157) | async def __aiter__(self) -> AsyncIterator[_T]:
    method _iter_events (line 161) | async def _iter_events(self) -> AsyncIterator[ServerSentEvent]:
    method __stream__ (line 165) | async def __stream__(self) -> AsyncIterator[_T]:
    method __aenter__ (line 222) | async def __aenter__(self) -> Self:
    method __aexit__ (line 225) | async def __aexit__(
    method close (line 233) | async def close(self) -> None:
  class ServerSentEvent (line 242) | class ServerSentEvent:
    method __init__ (line 243) | def __init__(
    method event (line 260) | def event(self) -> str | None:
    method id (line 264) | def id(self) -> str | None:
    method retry (line 268) | def retry(self) -> int | None:
    method data (line 272) | def data(self) -> str:
    method json (line 275) | def json(self) -> Any:
    method __repr__ (line 279) | def __repr__(self) -> str:
  class SSEDecoder (line 283) | class SSEDecoder:
    method __init__ (line 289) | def __init__(self) -> None:
    method iter_bytes (line 295) | def iter_bytes(self, iterator: Iterator[bytes]) -> Iterator[ServerSent...
    method _iter_chunks (line 305) | def _iter_chunks(self, iterator: Iterator[bytes]) -> Iterator[bytes]:
    method aiter_bytes (line 317) | async def aiter_bytes(self, iterator: AsyncIterator[bytes]) -> AsyncIt...
    method _aiter_chunks (line 327) | async def _aiter_chunks(self, iterator: AsyncIterator[bytes]) -> Async...
    method decode (line 339) | def decode(self, line: str) -> ServerSentEvent | None:
  class SSEBytesDecoder (line 389) | class SSEBytesDecoder(Protocol):
    method iter_bytes (line 390) | def iter_bytes(self, iterator: Iterator[bytes]) -> Iterator[ServerSent...
    method aiter_bytes (line 394) | def aiter_bytes(self, iterator: AsyncIterator[bytes]) -> AsyncIterator...
  function is_stream_class_type (line 399) | def is_stream_class_type(typ: type) -> TypeGuard[type[Stream[object]] | ...
  function extract_stream_chunk_type (line 405) | def extract_stream_chunk_type(

FILE: src/openai/_types.py
  class RequestOptions (line 117) | class RequestOptions(TypedDict, total=False):
  class NotGiven (line 129) | class NotGiven:
    method __bool__ (line 149) | def __bool__(self) -> Literal[False]:
    method __repr__ (line 153) | def __repr__(self) -> str:
  class Omit (line 162) | class Omit:
    method __bool__ (line 179) | def __bool__(self) -> Literal[False]:
  class ModelBuilderProtocol (line 189) | class ModelBuilderProtocol(Protocol):
    method build (line 191) | def build(
  class HeadersLikeProtocol (line 202) | class HeadersLikeProtocol(Protocol):
    method get (line 203) | def get(self, __key: str) -> str | None: ...
  class InheritsGeneric (line 235) | class InheritsGeneric(Protocol):
  class _GenericAlias (line 245) | class _GenericAlias(Protocol):
  class HttpxSendArgs (line 249) | class HttpxSendArgs(TypedDict, total=False):
  class SequenceNotStr (line 263) | class SequenceNotStr(Protocol[_T_co]):
    method __getitem__ (line 265) | def __getitem__(self, index: SupportsIndex, /) -> _T_co: ...
    method __getitem__ (line 267) | def __getitem__(self, index: slice, /) -> Sequence[_T_co]: ...
    method __contains__ (line 268) | def __contains__(self, value: object, /) -> bool: ...
    method __len__ (line 269) | def __len__(self) -> int: ...
    method __iter__ (line 270) | def __iter__(self) -> Iterator[_T_co]: ...
    method __reversed__ (line 271) | def __reversed__(self) -> Iterator[_T_co]: ...

FILE: src/openai/_utils/_compat.py
  function get_args (line 15) | def get_args(tp: type[Any]) -> tuple[Any, ...]:
  function get_origin (line 19) | def get_origin(tp: type[Any]) -> type[Any] | None:
  function is_union (line 23) | def is_union(tp: Optional[Type[Any]]) -> bool:
  function is_typeddict (line 32) | def is_typeddict(tp: Type[Any]) -> bool:
  function is_literal_type (line 36) | def is_literal_type(tp: Type[Any]) -> bool:
  function parse_date (line 40) | def parse_date(value: Union[date, StrBytesIntFloat]) -> date:
  function parse_datetime (line 44) | def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:

FILE: src/openai/_utils/_datetime_parse.py
  function _get_numeric (line 33) | def _get_numeric(value: StrBytesIntFloat, native_expected_type: str) -> ...
  function _from_unix_seconds (line 44) | def _from_unix_seconds(seconds: Union[int, float]) -> datetime:
  function _parse_timezone (line 56) | def _parse_timezone(value: Optional[str]) -> Union[None, int, timezone]:
  function parse_datetime (line 69) | def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:
  function parse_date (line 106) | def parse_date(value: Union[date, StrBytesIntFloat]) -> date:

FILE: src/openai/_utils/_json.py
  function openapi_dumps (line 11) | def openapi_dumps(obj: Any) -> bytes:
  class _CustomEncoder (line 28) | class _CustomEncoder(json.JSONEncoder):
    method default (line 30) | def default(self, o: Any) -> Any:

FILE: src/openai/_utils/_logs.py
  function _basic_config (line 14) | def _basic_config() -> None:
  function setup_logging (line 22) | def setup_logging() -> None:
  class SensitiveHeadersFilter (line 34) | class SensitiveHeadersFilter(logging.Filter):
    method filter (line 36) | def filter(self, record: logging.LogRecord) -> bool:

FILE: src/openai/_utils/_proxy.py
  class LazyProxy (line 10) | class LazyProxy(Generic[T], ABC):
    method __getattr__ (line 19) | def __getattr__(self, attr: str) -> object:
    method __repr__ (line 26) | def __repr__(self) -> str:
    method __str__ (line 33) | def __str__(self) -> str:
    method __dir__ (line 40) | def __dir__(self) -> Iterable[str]:
    method __class__ (line 48) | def __class__(self) -> type:  # pyright: ignore
    method __get_proxied__ (line 57) | def __get_proxied__(self) -> T:
    method __as_proxied__ (line 60) | def __as_proxied__(self) -> T:
    method __load__ (line 65) | def __load__(self) -> T: ...

FILE: src/openai/_utils/_reflection.py
  function function_has_argument (line 7) | def function_has_argument(func: Callable[..., Any], arg_name: str) -> bool:
  function assert_signatures_in_sync (line 13) | def assert_signatures_in_sync(

FILE: src/openai/_utils/_resources_proxy.py
  class ResourcesProxy (line 9) | class ResourcesProxy(LazyProxy[Any]):
    method __load__ (line 17) | def __load__(self) -> Any:

FILE: src/openai/_utils/_streams.py
  function consume_sync_iterator (line 5) | def consume_sync_iterator(iterator: Iterator[Any]) -> None:
  function consume_async_iterator (line 10) | async def consume_async_iterator(iterator: AsyncIterator[Any]) -> None:

FILE: src/openai/_utils/_sync.py
  function to_thread (line 16) | async def to_thread(
  function asyncify (line 28) | def asyncify(function: Callable[T_ParamSpec, T_Retval]) -> Callable[T_Pa...

FILE: src/openai/_utils/_transform.py
  class PropertyInfo (line 44) | class PropertyInfo:
    method __init__ (line 60) | def __init__(
    method __repr__ (line 74) | def __repr__(self) -> str:
  function maybe_transform (line 78) | def maybe_transform(
  function transform (line 92) | def transform(
  function _get_annotated_type (line 116) | def _get_annotated_type(type_: type) -> type | None:
  function _maybe_transform_key (line 131) | def _maybe_transform_key(key: str, type_: type) -> str:
  function _no_transform_needed (line 150) | def _no_transform_needed(annotation: type) -> bool:
  function _transform_recursive (line 154) | def _transform_recursive(
  function _format_data (line 236) | def _format_data(data: object, format_: PropertyFormat, format_template:...
  function _transform_typeddict (line 263) | def _transform_typeddict(
  function async_maybe_transform (line 284) | async def async_maybe_transform(
  function async_transform (line 297) | async def async_transform(
  function _async_transform_recursive (line 320) | async def _async_transform_recursive(
  function _async_format_data (line 402) | async def _async_format_data(data: object, format_: PropertyFormat, form...
  function _async_transform_typeddict (line 429) | async def _async_transform_typeddict(
  function get_type_hints (line 451) | def get_type_hints(

FILE: src/openai/_utils/_typing.py
  function is_annotated_type (line 21) | def is_annotated_type(typ: type) -> bool:
  function is_list_type (line 25) | def is_list_type(typ: type) -> bool:
  function is_sequence_type (line 29) | def is_sequence_type(typ: type) -> bool:
  function is_iterable_type (line 34) | def is_iterable_type(typ: type) -> bool:
  function is_union_type (line 40) | def is_union_type(typ: type) -> bool:
  function is_required_type (line 44) | def is_required_type(typ: type) -> bool:
  function is_typevar (line 48) | def is_typevar(typ: type) -> bool:
  function is_type_alias_type (line 59) | def is_type_alias_type(tp: Any, /) -> TypeIs[typing_extensions.TypeAlias...
  function strip_annotated_type (line 76) | def strip_annotated_type(typ: type) -> type:
  function extract_type_arg (line 83) | def extract_type_arg(typ: type, index: int) -> type:
  function extract_type_var_from_base (line 91) | def extract_type_var_from_base(

FILE: src/openai/_utils/_utils.py
  function flatten (line 37) | def flatten(t: Iterable[Iterable[_T]]) -> list[_T]:
  function extract_files (line 41) | def extract_files(
  function _extract_items (line 60) | def _extract_items(
  function is_given (line 133) | def is_given(obj: _T | NotGiven | Omit) -> TypeGuard[_T]:
  function is_tuple (line 147) | def is_tuple(obj: object) -> TypeGuard[tuple[object, ...]]:
  function is_tuple_t (line 151) | def is_tuple_t(obj: _TupleT | object) -> TypeGuard[_TupleT]:
  function is_sequence (line 155) | def is_sequence(obj: object) -> TypeGuard[Sequence[object]]:
  function is_sequence_t (line 159) | def is_sequence_t(obj: _SequenceT | object) -> TypeGuard[_SequenceT]:
  function is_mapping (line 163) | def is_mapping(obj: object) -> TypeGuard[Mapping[str, object]]:
  function is_mapping_t (line 167) | def is_mapping_t(obj: _MappingT | object) -> TypeGuard[_MappingT]:
  function is_dict (line 171) | def is_dict(obj: object) -> TypeGuard[dict[object, object]]:
  function is_list (line 175) | def is_list(obj: object) -> TypeGuard[list[object]]:
  function is_iterable (line 179) | def is_iterable(obj: object) -> TypeGuard[Iterable[object]]:
  function deepcopy_minimal (line 183) | def deepcopy_minimal(item: _T) -> _T:
  function human_join (line 199) | def human_join(seq: Sequence[str], *, delim: str = ", ", final: str = "o...
  function quote (line 213) | def quote(string: str) -> str:
  function required_args (line 218) | def required_args(*variants: Sequence[str]) -> Callable[[CallableT], Cal...
  function strip_not_given (line 298) | def strip_not_given(obj: None) -> None: ...
  function strip_not_given (line 302) | def strip_not_given(obj: Mapping[_K, _V | NotGiven]) -> dict[_K, _V]: ...
  function strip_not_given (line 306) | def strip_not_given(obj: object) -> object: ...
  function strip_not_given (line 309) | def strip_not_given(obj: object | None) -> object:
  function coerce_integer (line 320) | def coerce_integer(val: str) -> int:
  function coerce_float (line 324) | def coerce_float(val: str) -> float:
  function coerce_boolean (line 328) | def coerce_boolean(val: str) -> bool:
  function maybe_coerce_integer (line 332) | def maybe_coerce_integer(val: str | None) -> int | None:
  function maybe_coerce_float (line 338) | def maybe_coerce_float(val: str | None) -> float | None:
  function maybe_coerce_boolean (line 344) | def maybe_coerce_boolean(val: str | None) -> bool | None:
  function removeprefix (line 350) | def removeprefix(string: str, prefix: str) -> str:
  function removesuffix (line 360) | def removesuffix(string: str, suffix: str) -> str:
  function file_from_path (line 370) | def file_from_path(path: str) -> FileTypes:
  function get_required_header (line 376) | def get_required_header(headers: HeadersLike, header: str) -> str:
  function get_async_library (line 395) | def get_async_library() -> str:
  function lru_cache (line 402) | def lru_cache(*, maxsize: int | None = 128) -> Callable[[CallableT], Cal...
  function json_safe (line 412) | def json_safe(data: object) -> object:
  function is_azure_client (line 428) | def is_azure_client(client: object) -> TypeGuard[AzureOpenAI]:
  function is_async_azure_client (line 434) | def is_async_azure_client(client: object) -> TypeGuard[AsyncAzureOpenAI]:

FILE: src/openai/cli/_api/_main.py
  function register_commands (line 8) | def register_commands(parser: ArgumentParser) -> None:

FILE: src/openai/cli/_api/audio.py
  function register (line 17) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLITranscribeArgs (line 46) | class CLITranscribeArgs(BaseModel):
  class CLITranslationArgs (line 55) | class CLITranslationArgs(BaseModel):
  class CLIAudio (line 64) | class CLIAudio:
    method transcribe (line 66) | def transcribe(args: CLITranscribeArgs) -> None:
    method translate (line 89) | def translate(args: CLITranslationArgs) -> None:

FILE: src/openai/cli/_api/chat/__init__.py
  function register (line 12) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:

FILE: src/openai/cli/_api/chat/completions.py
  function register (line 25) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLIMessage (line 79) | class CLIMessage(NamedTuple):
  class CLIChatCompletionCreateArgs (line 84) | class CLIChatCompletionCreateArgs(BaseModel):
  class CLIChatCompletion (line 95) | class CLIChatCompletion:
    method create (line 97) | def create(args: CLIChatCompletionCreateArgs) -> None:
    method _create (line 125) | def _create(params: CompletionCreateParamsNonStreaming) -> None:
    method _stream_create (line 141) | def _stream_create(params: CompletionCreateParamsStreaming) -> None:

FILE: src/openai/cli/_api/completions.py
  function register (line 21) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLICompletionCreateArgs (line 93) | class CLICompletionCreateArgs(BaseModel):
  class CLICompletions (line 112) | class CLICompletions:
    method create (line 114) | def create(args: CLICompletionCreateArgs) -> None:
    method _create (line 145) | def _create(completion: Completion) -> None:
    method _stream_create (line 159) | def _stream_create(stream: Stream[Completion]) -> None:

FILE: src/openai/cli/_api/files.py
  function register (line 14) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLIFileIDArgs (line 43) | class CLIFileIDArgs(BaseModel):
  class CLIFileCreateArgs (line 47) | class CLIFileCreateArgs(BaseModel):
  class CLIFile (line 52) | class CLIFile:
    method create (line 54) | def create(args: CLIFileCreateArgs) -> None:
    method get (line 67) | def get(args: CLIFileIDArgs) -> None:
    method delete (line 72) | def delete(args: CLIFileIDArgs) -> None:
    method list (line 77) | def list() -> None:

FILE: src/openai/cli/_api/fine_tuning/__init__.py
  function register (line 12) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:

FILE: src/openai/cli/_api/fine_tuning/jobs.py
  function register (line 21) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLIFineTuningJobsCreateArgs (line 106) | class CLIFineTuningJobsCreateArgs(BaseModel):
  class CLIFineTuningJobsRetrieveArgs (line 114) | class CLIFineTuningJobsRetrieveArgs(BaseModel):
  class CLIFineTuningJobsListArgs (line 118) | class CLIFineTuningJobsListArgs(BaseModel):
  class CLIFineTuningJobsCancelArgs (line 123) | class CLIFineTuningJobsCancelArgs(BaseModel):
  class CLIFineTuningJobsListEventsArgs (line 127) | class CLIFineTuningJobsListEventsArgs(BaseModel):
  class CLIFineTuningJobs (line 133) | class CLIFineTuningJobs:
    method create (line 135) | def create(args: CLIFineTuningJobsCreateArgs) -> None:
    method retrieve (line 147) | def retrieve(args: CLIFineTuningJobsRetrieveArgs) -> None:
    method list (line 152) | def list(args: CLIFineTuningJobsListArgs) -> None:
    method cancel (line 159) | def cancel(args: CLIFineTuningJobsCancelArgs) -> None:
    method list_events (line 164) | def list_events(args: CLIFineTuningJobsListEventsArgs) -> None:

FILE: src/openai/cli/_api/image.py
  function register (line 15) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLIImageCreateArgs (line 61) | class CLIImageCreateArgs(BaseModel):
  class CLIImageCreateVariationArgs (line 69) | class CLIImageCreateVariationArgs(BaseModel):
  class CLIImageEditArgs (line 77) | class CLIImageEditArgs(BaseModel):
  class CLIImage (line 87) | class CLIImage:
    method create (line 89) | def create(args: CLIImageCreateArgs) -> None:
    method create_variation (line 102) | def create_variation(args: CLIImageCreateVariationArgs) -> None:
    method edit (line 118) | def edit(args: CLIImageEditArgs) -> None:

FILE: src/openai/cli/_api/models.py
  function register (line 13) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class CLIModelIDArgs (line 26) | class CLIModelIDArgs(BaseModel):
  class CLIModels (line 30) | class CLIModels:
    method get (line 32) | def get(args: CLIModelIDArgs) -> None:
    method delete (line 37) | def delete(args: CLIModelIDArgs) -> None:
    method list (line 42) | def list() -> None:

FILE: src/openai/cli/_cli.py
  class Arguments (line 30) | class Arguments(BaseModel):
    class Config (line 33) | class Config(pydantic.BaseConfig):  # type: ignore
  function _build_parser (line 62) | def _build_parser() -> argparse.ArgumentParser:
  function main (line 126) | def main() -> int:
  function _parse_args (line 138) | def _parse_args(parser: argparse.ArgumentParser) -> tuple[argparse.Names...
  function _main (line 162) | def _main() -> None:

FILE: src/openai/cli/_errors.py
  class CLIError (line 11) | class CLIError(OpenAIError): ...
  class SilentCLIError (line 14) | class SilentCLIError(CLIError): ...
  function display_error (line 17) | def display_error(err: CLIError | APIError | pydantic.ValidationError) -...

FILE: src/openai/cli/_models.py
  class BaseModel (line 10) | class BaseModel(_models.BaseModel):
    class Config (line 13) | class Config(pydantic.BaseConfig):  # type: ignore

FILE: src/openai/cli/_progress.py
  class CancelledError (line 8) | class CancelledError(Exception):
    method __init__ (line 9) | def __init__(self, msg: str) -> None:
    method __str__ (line 14) | def __str__(self) -> str:
  class BufferReader (line 20) | class BufferReader(io.BytesIO):
    method __init__ (line 21) | def __init__(self, buf: bytes = b"", desc: str | None = None) -> None:
    method __len__ (line 27) | def __len__(self) -> int:
    method read (line 31) | def read(self, n: int | None = -1) -> bytes:
  function progress (line 43) | def progress(total: float, desc: str | None) -> Callable[[float], None]:
  function MB (line 58) | def MB(i: int) -> int:

FILE: src/openai/cli/_tools/_main.py
  function register_commands (line 12) | def register_commands(parser: ArgumentParser, subparser: _SubParsersActi...

FILE: src/openai/cli/_tools/fine_tunes.py
  function register (line 20) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class PrepareDataArgs (line 39) | class PrepareDataArgs(BaseModel):
  function prepare_data (line 45) | def prepare_data(args: PrepareDataArgs) -> None:

FILE: src/openai/cli/_tools/migrate.py
  function register (line 22) | def register(subparser: _SubParsersAction[ArgumentParser]) -> None:
  class GritArgs (line 30) | class GritArgs(BaseModel):
  function grit (line 35) | def grit(args: GritArgs) -> None:
  class MigrateArgs (line 46) | class MigrateArgs(BaseModel):
  function migrate (line 51) | def migrate(args: MigrateArgs) -> None:
  function _cache_dir (line 67) | def _cache_dir() -> Path:
  function _debug (line 75) | def _debug(message: str) -> None:
  function install (line 82) | def install() -> Path:
  function _move_files_recursively (line 145) | def _move_files_recursively(source_dir: Path, target_dir: Path) -> None:
  function _get_arch (line 153) | def _get_arch() -> str:

FILE: src/openai/cli/_utils.py
  class Colors (line 12) | class Colors:
  function get_client (line 23) | def get_client() -> OpenAI:
  function organization_info (line 27) | def organization_info() -> str:
  function print_model (line 35) | def print_model(model: BaseModel) -> None:
  function can_use_http2 (line 39) | def can_use_http2() -> bool:

FILE: src/openai/helpers/local_audio_player.py
  class LocalAudioPlayer (line 19) | class LocalAudioPlayer:
    method __init__ (line 20) | def __init__(
    method _tts_response_to_buffer (line 28) | async def _tts_response_to_buffer(
    method play (line 53) | async def play(
    method play_stream (line 104) | async def play_stream(

FILE: src/openai/helpers/microphone.py
  class Microphone (line 22) | class Microphone(Generic[DType]):
    method __init__ (line 23) | def __init__(
    method _ndarray_to_wav (line 37) | def _ndarray_to_wav(self, audio_data: npt.NDArray[DType]) -> FileTypes:
    method record (line 48) | async def record(self, return_ndarray: Literal[True]) -> npt.NDArray[D...
    method record (line 51) | async def record(self, return_ndarray: Literal[False]) -> FileTypes: ...
    method record (line 54) | async def record(self, return_ndarray: None = ...) -> FileTypes: ...
    method record (line 56) | async def record(self, return_ndarray: Union[bool, None] = False) -> U...

FILE: src/openai/lib/_old_api.py
  class APIRemovedInV1 (line 21) | class APIRemovedInV1(OpenAIError):
    method __init__ (line 22) | def __init__(self, *, symbol: str) -> None:
  class APIRemovedInV1Proxy (line 26) | class APIRemovedInV1Proxy(LazyProxy[Any]):
    method __init__ (line 27) | def __init__(self, *, symbol: str) -> None:
    method __load__ (line 32) | def __load__(self) -> Any:
    method __call__ (line 38) | def __call__(self, *_args: Any, **_kwargs: Any) -> Any:

FILE: src/openai/lib/_parsing/_completions.py
  function is_strict_chat_completion_tool_param (line 43) | def is_strict_chat_completion_tool_param(
  function select_strict_chat_completion_tools (line 55) | def select_strict_chat_completion_tools(
  function validate_input_tools (line 65) | def validate_input_tools(
  function parse_chat_completion (line 86) | def parse_chat_completion(
  function get_input_tool_by_name (line 165) | def get_input_tool_by_name(
  function parse_function_tool_arguments (line 171) | def parse_function_tool_arguments(
  function maybe_parse_content (line 190) | def maybe_parse_content(
  function has_parseable_input (line 201) | def has_parseable_input(
  function has_rich_response_format (line 216) | def has_rich_response_format(
  function is_response_format_param (line 228) | def is_response_format_param(response_format: object) -> TypeGuard[Respo...
  function is_parseable_tool (line 232) | def is_parseable_tool(input_tool: ChatCompletionToolUnionParam) -> bool:
  function _parse_content (line 243) | def _parse_content(response_format: type[ResponseFormatT], content: str)...
  function type_to_response_format_param (line 256) | def type_to_response_format_param(

FILE: src/openai/lib/_parsing/_responses.py
  function type_to_text_format_param (line 38) | def type_to_text_format_param(type_: type) -> ResponseFormatTextConfigPa...
  function parse_response (line 53) | def parse_response(
  function parse_text (line 136) | def parse_text(text: str, text_format: type[TextFormatT] | Omit) -> Text...
  function get_input_tool_by_name (line 152) | def get_input_tool_by_name(*, input_tools: Iterable[ToolParam], name: st...
  function parse_function_tool_arguments (line 160) | def parse_function_tool_arguments(

FILE: src/openai/lib/_pydantic.py
  function to_strict_json_schema (line 16) | def to_strict_json_schema(model: type[pydantic.BaseModel] | pydantic.Typ...
  function _ensure_strict_json_schema (line 27) | def _ensure_strict_json_schema(
  function resolve_ref (line 118) | def resolve_ref(*, root: dict[str, object], ref: str) -> object:
  function is_basemodel_type (line 132) | def is_basemodel_type(typ: type) -> TypeGuard[type[pydantic.BaseModel]]:
  function is_dataclass_like_type (line 138) | def is_dataclass_like_type(typ: type) -> bool:
  function is_dict (line 143) | def is_dict(obj: object) -> TypeGuard[dict[str, object]]:
  function has_more_than_n_keys (line 149) | def has_more_than_n_keys(obj: dict[str, object], n: int) -> bool:

FILE: src/openai/lib/_realtime.py
  class _Calls (line 21) | class _Calls(Calls):
    method create (line 23) | def create(
  class _AsyncCalls (line 58) | class _AsyncCalls(AsyncCalls):
    method create (line 60) | async def create(

FILE: src/openai/lib/_tools.py
  class PydanticFunctionTool (line 13) | class PydanticFunctionTool(Dict[str, Any]):
    method __init__ (line 21) | def __init__(self, defn: FunctionDefinition, model: type[pydantic.Base...
    method cast (line 25) | def cast(self) -> FunctionDefinition:
  class ResponsesPydanticFunctionTool (line 29) | class ResponsesPydanticFunctionTool(Dict[str, Any]):
    method __init__ (line 32) | def __init__(self, tool: ResponsesFunctionToolParam, model: type[pydan...
    method cast (line 36) | def cast(self) -> ResponsesFunctionToolParam:
  function pydantic_function_tool (line 40) | def pydantic_function_tool(

FILE: src/openai/lib/_validators.py
  class Remediation (line 12) | class Remediation(NamedTuple):
  function num_examples_validator (line 25) | def num_examples_validator(df: pd.DataFrame) -> Remediation:
  function necessary_column_validator (line 39) | def necessary_column_validator(df: pd.DataFrame, necessary_column: str) ...
  function additional_column_validator (line 75) | def additional_column_validator(df: pd.DataFrame, fields: list[str] = ["...
  function non_empty_field_validator (line 105) | def non_empty_field_validator(df: pd.DataFrame, field: str = "completion...
  function duplicated_rows_validator (line 131) | def duplicated_rows_validator(df: pd.DataFrame, fields: list[str] = ["pr...
  function long_examples_validator (line 156) | def long_examples_validator(df: pd.DataFrame) -> Remediation:
  function common_prompt_suffix_validator (line 193) | def common_prompt_suffix_validator(df: pd.DataFrame) -> Remediation:
  function common_prompt_prefix_validator (line 261) | def common_prompt_prefix_validator(df: pd.DataFrame) -> Remediation:
  function common_completion_prefix_validator (line 300) | def common_completion_prefix_validator(df: pd.DataFrame) -> Remediation:
  function common_completion_suffix_validator (line 336) | def common_completion_suffix_validator(df: pd.DataFrame) -> Remediation:
  function completions_space_start_validator (line 404) | def completions_space_start_validator(df: pd.DataFrame) -> Remediation:
  function lower_case_validator (line 429) | def lower_case_validator(df: pd.DataFrame, column: Any) -> Remediation |...
  function read_any_format (line 451) | def read_any_format(
  function format_inferrer_validator (line 540) | def format_inferrer_validator(df: pd.DataFrame) -> Remediation:
  function apply_necessary_remediation (line 552) | def apply_necessary_remediation(df: OptionalDataFrameT, remediation: Rem...
  function accept_suggestion (line 566) | def accept_suggestion(input_text: str, auto_accept: bool) -> bool:
  function apply_optional_remediation (line 574) | def apply_optional_remediation(
  function estimate_fine_tuning_time (line 592) | def estimate_fine_tuning_time(df: pd.DataFrame) -> None:
  function get_outfnames (line 621) | def get_outfnames(fname: str, split: bool) -> list[str]:
  function get_classification_hyperparams (line 632) | def get_classification_hyperparams(df: pd.DataFrame) -> tuple[int, object]:
  function write_out_file (line 640) | def write_out_file(df: pd.DataFrame, fname: str, any_remediations: bool,...
  function infer_task_type (line 715) | def infer_task_type(df: pd.DataFrame) -> str:
  function get_common_xfix (line 729) | def get_common_xfix(series: Any, xfix: str = "suffix") -> str:
  function get_validators (line 750) | def get_validators() -> list[Validator]:
  function apply_validators (line 770) | def apply_validators(

FILE: src/openai/lib/azure.py
  class MutuallyExclusiveAuthError (line 45) | class MutuallyExclusiveAuthError(OpenAIError):
    method __init__ (line 46) | def __init__(self) -> None:
  class BaseAzureClient (line 52) | class BaseAzureClient(BaseClient[_HttpxClientT, _DefaultStreamT]):
    method _build_request (line 57) | def _build_request(
    method _prepare_url (line 71) | def _prepare_url(self, url: str) -> httpx.URL:
  class AzureOpenAI (line 89) | class AzureOpenAI(BaseAzureClient[httpx.Client, Stream[Any]], OpenAI):
    method __init__ (line 91) | def __init__(
    method __init__ (line 112) | def __init__(
    method __init__ (line 132) | def __init__(
    method __init__ (line 151) | def __init__(
    method copy (line 258) | def copy(
    method _get_azure_ad_token (line 306) | def _get_azure_ad_token(self) -> str | None:
    method _prepare_options (line 322) | def _prepare_options(self, options: FinalRequestOptions) -> FinalReque...
    method _configure_realtime (line 341) | def _configure_realtime(self, model: str, extra_query: Query) -> tuple...
  class AsyncAzureOpenAI (line 367) | class AsyncAzureOpenAI(BaseAzureClient[httpx.AsyncClient, AsyncStream[An...
    method __init__ (line 369) | def __init__(
    method __init__ (line 391) | def __init__(
    method __init__ (line 412) | def __init__(
    method __init__ (line 432) | def __init__(
    method copy (line 539) | def copy(
    method _get_azure_ad_token (line 587) | async def _get_azure_ad_token(self) -> str | None:
    method _prepare_options (line 605) | async def _prepare_options(self, options: FinalRequestOptions) -> Fina...
    method _configure_realtime (line 624) | async def _configure_realtime(self, model: str, extra_query: Query) ->...

FILE: src/openai/lib/streaming/_assistants.py
  class AssistantEventHandler (line 28) | class AssistantEventHandler:
    method __init__ (line 42) | def __init__(self) -> None:
    method _init (line 58) | def _init(self, stream: Stream[AssistantStreamEvent]) -> None:
    method __next__ (line 66) | def __next__(self) -> AssistantStreamEvent:
    method __iter__ (line 69) | def __iter__(self) -> Iterator[AssistantStreamEvent]:
    method current_event (line 74) | def current_event(self) -> AssistantStreamEvent | None:
    method current_run (line 78) | def current_run(self) -> Run | None:
    method current_run_step_snapshot (line 82) | def current_run_step_snapshot(self) -> RunStep | None:
    method current_message_snapshot (line 89) | def current_message_snapshot(self) -> Message | None:
    method close (line 92) | def close(self) -> None:
    method until_done (line 101) | def until_done(self) -> None:
    method get_final_run (line 105) | def get_final_run(self) -> Run:
    method get_final_run_steps (line 114) | def get_final_run_steps(self) -> list[RunStep]:
    method get_final_messages (line 123) | def get_final_messages(self) -> list[Message]:
    method __text_deltas__ (line 132) | def __text_deltas__(self) -> Iterator[str]:
    method on_end (line 143) | def on_end(self) -> None:
    method on_event (line 150) | def on_event(self, event: AssistantStreamEvent) -> None:
    method on_run_step_created (line 153) | def on_run_step_created(self, run_step: RunStep) -> None:
    method on_run_step_delta (line 156) | def on_run_step_delta(self, delta: RunStepDelta, snapshot: RunStep) ->...
    method on_run_step_done (line 183) | def on_run_step_done(self, run_step: RunStep) -> None:
    method on_tool_call_created (line 186) | def on_tool_call_created(self, tool_call: ToolCall) -> None:
    method on_tool_call_delta (line 189) | def on_tool_call_delta(self, delta: ToolCallDelta, snapshot: ToolCall)...
    method on_tool_call_done (line 192) | def on_tool_call_done(self, tool_call: ToolCall) -> None:
    method on_exception (line 195) | def on_exception(self, exception: Exception) -> None:
    method on_timeout (line 198) | def on_timeout(self) -> None:
    method on_message_created (line 201) | def on_message_created(self, message: Message) -> None:
    method on_message_delta (line 204) | def on_message_delta(self, delta: MessageDelta, snapshot: Message) -> ...
    method on_message_done (line 229) | def on_message_done(self, message: Message) -> None:
    method on_text_created (line 232) | def on_text_created(self, text: Text) -> None:
    method on_text_delta (line 235) | def on_text_delta(self, delta: TextDelta, snapshot: Text) -> None:
    method on_text_done (line 249) | def on_text_done(self, text: Text) -> None:
    method on_image_file_done (line 252) | def on_image_file_done(self, image_file: ImageFile) -> None:
    method _emit_sse_event (line 255) | def _emit_sse_event(self, event: AssistantStreamEvent) -> None:
    method __stream__ (line 400) | def __stream__(self) -> Iterator[AssistantStreamEvent]:
  class AssistantStreamManager (line 424) | class AssistantStreamManager(Generic[AssistantEventHandlerT]):
    method __init__ (line 435) | def __init__(
    method __enter__ (line 445) | def __enter__(self) -> AssistantEventHandlerT:
    method __exit__ (line 450) | def __exit__(
  class AsyncAssistantEventHandler (line 460) | class AsyncAssistantEventHandler:
    method __init__ (line 474) | def __init__(self) -> None:
    method _init (line 490) | def _init(self, stream: AsyncStream[AssistantStreamEvent]) -> None:
    method __anext__ (line 498) | async def __anext__(self) -> AssistantStreamEvent:
    method __aiter__ (line 501) | async def __aiter__(self) -> AsyncIterator[AssistantStreamEvent]:
    method close (line 505) | async def close(self) -> None:
    method current_event (line 515) | def current_event(self) -> AssistantStreamEvent | None:
    method current_run (line 519) | def current_run(self) -> Run | None:
    method current_run_step_snapshot (line 523) | def current_run_step_snapshot(self) -> RunStep | None:
    method current_message_snapshot (line 530) | def current_message_snapshot(self) -> Message | None:
    method until_done (line 533) | async def until_done(self) -> None:
    method get_final_run (line 537) | async def get_final_run(self) -> Run:
    method get_final_run_steps (line 546) | async def get_final_run_steps(self) -> list[RunStep]:
    method get_final_messages (line 555) | async def get_final_messages(self) -> list[Message]:
    method __text_deltas__ (line 564) | async def __text_deltas__(self) -> AsyncIterator[str]:
    method on_end (line 575) | async def on_end(self) -> None:
    method on_event (line 582) | async def on_event(self, event: AssistantStreamEvent) -> None:
    method on_run_step_created (line 585) | async def on_run_step_created(self, run_step: RunStep) -> None:
    method on_run_step_delta (line 588) | async def on_run_step_delta(self, delta: RunStepDelta, snapshot: RunSt...
    method on_run_step_done (line 615) | async def on_run_step_done(self, run_step: RunStep) -> None:
    method on_tool_call_created (line 618) | async def on_tool_call_created(self, tool_call: ToolCall) -> None:
    method on_tool_call_delta (line 621) | async def on_tool_call_delta(self, delta: ToolCallDelta, snapshot: Too...
    method on_tool_call_done (line 624) | async def on_tool_call_done(self, tool_call: ToolCall) -> None:
    method on_exception (line 627) | async def on_exception(self, exception: Exception) -> None:
    method on_timeout (line 630) | async def on_timeout(self) -> None:
    method on_message_created (line 633) | async def on_message_created(self, message: Message) -> None:
    method on_message_delta (line 636) | async def on_message_delta(self, delta: MessageDelta, snapshot: Messag...
    method on_message_done (line 661) | async def on_message_done(self, message: Message) -> None:
    method on_text_created (line 664) | async def on_text_created(self, text: Text) -> None:
    method on_text_delta (line 667) | async def on_text_delta(self, delta: TextDelta, snapshot: Text) -> None:
    method on_text_done (line 681) | async def on_text_done(self, text: Text) -> None:
    method on_image_file_done (line 684) | async def on_image_file_done(self, image_file: ImageFile) -> None:
    method _emit_sse_event (line 687) | async def _emit_sse_event(self, event: AssistantStreamEvent) -> None:
    method __stream__ (line 832) | async def __stream__(self) -> AsyncIterator[AssistantStreamEvent]:
  class AsyncAssistantStreamManager (line 856) | class AsyncAssistantStreamManager(Generic[AsyncAssistantEventHandlerT]):
    method __init__ (line 868) | def __init__(
    method __aenter__ (line 878) | async def __aenter__(self) -> AsyncAssistantEventHandlerT:
    method __aexit__ (line 883) | async def __aexit__(
  function accumulate_run_step (line 893) | def accumulate_run_step(
  function accumulate_event (line 922) | def accumulate_event(
  function accumulate_delta (line 980) | def accumulate_delta(acc: dict[object, object], delta: dict[object, obje...

FILE: src/openai/lib/streaming/_deltas.py
  function accumulate_delta (line 6) | def accumulate_delta(acc: dict[object, object], delta: dict[object, obje...

FILE: src/openai/lib/streaming/chat/_completions.py
  class ChatCompletionStream (line 46) | class ChatCompletionStream(Generic[ResponseFormatT]):
    method __init__ (line 55) | def __init__(
    method __next__ (line 67) | def __next__(self) -> ChatCompletionStreamEvent[ResponseFormatT]:
    method __iter__ (line 70) | def __iter__(self) -> Iterator[ChatCompletionStreamEvent[ResponseForma...
    method __enter__ (line 74) | def __enter__(self) -> Self:
    method __exit__ (line 77) | def __exit__(
    method close (line 85) | def close(self) -> None:
    method get_final_completion (line 93) | def get_final_completion(self) -> ParsedChatCompletion[ResponseFormatT]:
    method until_done (line 104) | def until_done(self) -> Self:
    method current_completion_snapshot (line 110) | def current_completion_snapshot(self) -> ParsedChatCompletionSnapshot:
    method __stream__ (line 113) | def __stream__(self) -> Iterator[ChatCompletionStreamEvent[ResponseFor...
  class ChatCompletionStreamManager (line 122) | class ChatCompletionStreamManager(Generic[ResponseFormatT]):
    method __init__ (line 136) | def __init__(
    method __enter__ (line 148) | def __enter__(self) -> ChatCompletionStream[ResponseFormatT]:
    method __exit__ (line 159) | def __exit__(
  class AsyncChatCompletionStream (line 169) | class AsyncChatCompletionStream(Generic[ResponseFormatT]):
    method __init__ (line 178) | def __init__(
    method __anext__ (line 190) | async def __anext__(self) -> ChatCompletionStreamEvent[ResponseFormatT]:
    method __aiter__ (line 193) | async def __aiter__(self) -> AsyncIterator[ChatCompletionStreamEvent[R...
    method __aenter__ (line 197) | async def __aenter__(self) -> Self:
    method __aexit__ (line 200) | async def __aexit__(
    method close (line 208) | async def close(self) -> None:
    method get_final_completion (line 216) | async def get_final_completion(self) -> ParsedChatCompletion[ResponseF...
    method until_done (line 227) | async def until_done(self) -> Self:
    method current_completion_snapshot (line 233) | def current_completion_snapshot(self) -> ParsedChatCompletionSnapshot:
    method __stream__ (line 236) | async def __stream__(self) -> AsyncIterator[ChatCompletionStreamEvent[...
  class AsyncChatCompletionStreamManager (line 245) | class AsyncChatCompletionStreamManager(Generic[ResponseFormatT]):
    method __init__ (line 259) | def __init__(
    method __aenter__ (line 271) | async def __aenter__(self) -> AsyncChatCompletionStream[ResponseFormatT]:
    method __aexit__ (line 282) | async def __aexit__(
  class ChatCompletionStreamState (line 292) | class ChatCompletionStreamState(Generic[ResponseFormatT]):
    method __init__ (line 313) | def __init__(
    method get_final_completion (line 326) | def get_final_completion(self) -> ParsedChatCompletion[ResponseFormatT]:
    method current_completion_snapshot (line 339) | def current_completion_snapshot(self) -> ParsedChatCompletionSnapshot:
    method handle_chunk (line 343) | def handle_chunk(self, chunk: ChatCompletionChunk) -> Iterable[ChatCom...
    method _get_choice_state (line 352) | def _get_choice_state(self, choice: ChoiceChunk) -> ChoiceEventState:
    method _accumulate_chunk (line 360) | def _accumulate_chunk(self, chunk: ChatCompletionChunk) -> ParsedChatC...
    method _build_events (line 493) | def _build_events(
  class ChoiceEventState (line 585) | class ChoiceEventState:
    method __init__ (line 586) | def __init__(self, *, input_tools: list[ChatCompletionToolUnionParam])...
    method get_done_events (line 596) | def get_done_events(
    method _content_done_events (line 637) | def _content_done_events(
    method _add_tool_done_event (line 701) | def _add_tool_done_event(
  function _convert_initial_chunk_into_snapshot (line 740) | def _convert_initial_chunk_into_snapshot(chunk: ChatCompletionChunk) -> ...
  function _is_valid_chat_completion_chunk_weak (line 763) | def _is_valid_chat_completion_chunk_weak(sse_event: ChatCompletionChunk)...

FILE: src/openai/lib/streaming/chat/_events.py
  class ChunkEvent (line 10) | class ChunkEvent(BaseModel):
  class ContentDeltaEvent (line 18) | class ContentDeltaEvent(BaseModel):
  class ContentDoneEvent (line 30) | class ContentDoneEvent(GenericModel, Generic[ResponseFormatT]):
  class RefusalDeltaEvent (line 38) | class RefusalDeltaEvent(BaseModel):
  class RefusalDoneEvent (line 46) | class RefusalDoneEvent(BaseModel):
  class FunctionToolCallArgumentsDeltaEvent (line 52) | class FunctionToolCallArgumentsDeltaEvent(BaseModel):
  class FunctionToolCallArgumentsDoneEvent (line 69) | class FunctionToolCallArgumentsDoneEvent(BaseModel):
  class LogprobsContentDeltaEvent (line 83) | class LogprobsContentDeltaEvent(BaseModel):
  class LogprobsContentDoneEvent (line 91) | class LogprobsContentDoneEvent(BaseModel):
  class LogprobsRefusalDeltaEvent (line 97) | class LogprobsRefusalDeltaEvent(BaseModel):
  class LogprobsRefusalDoneEvent (line 105) | class LogprobsRefusalDoneEvent(BaseModel):

FILE: src/openai/lib/streaming/responses/_events.py
  class ResponseTextDeltaEvent (line 72) | class ResponseTextDeltaEvent(RawResponseTextDeltaEvent):
  class ResponseTextDoneEvent (line 76) | class ResponseTextDoneEvent(RawResponseTextDoneEvent, GenericModel, Gene...
  class ResponseFunctionCallArgumentsDeltaEvent (line 80) | class ResponseFunctionCallArgumentsDeltaEvent(RawResponseFunctionCallArg...
  class ResponseCompletedEvent (line 84) | class ResponseCompletedEvent(RawResponseCompletedEvent, GenericModel, Ge...

FILE: src/openai/lib/streaming/responses/_responses.py
  class ResponseStream (line 30) | class ResponseStream(Generic[TextFormatT]):
    method __init__ (line 31) | def __init__(
    method __next__ (line 45) | def __next__(self) -> ResponseStreamEvent[TextFormatT]:
    method __iter__ (line 48) | def __iter__(self) -> Iterator[ResponseStreamEvent[TextFormatT]]:
    method __enter__ (line 52) | def __enter__(self) -> Self:
    method __stream__ (line 55) | def __stream__(self) -> Iterator[ResponseStreamEvent[TextFormatT]]:
    method __exit__ (line 62) | def __exit__(
    method close (line 70) | def close(self) -> None:
    method get_final_response (line 78) | def get_final_response(self) -> ParsedResponse[TextFormatT]:
    method until_done (line 89) | def until_done(self) -> Self:
  class ResponseStreamManager (line 95) | class ResponseStreamManager(Generic[TextFormatT]):
    method __init__ (line 96) | def __init__(
    method __enter__ (line 110) | def __enter__(self) -> ResponseStream[TextFormatT]:
    method __exit__ (line 122) | def __exit__(
  class AsyncResponseStream (line 132) | class AsyncResponseStream(Generic[TextFormatT]):
    method __init__ (line 133) | def __init__(
    method __anext__ (line 147) | async def __anext__(self) -> ResponseStreamEvent[TextFormatT]:
    method __aiter__ (line 150) | async def __aiter__(self) -> AsyncIterator[ResponseStreamEvent[TextFor...
    method __stream__ (line 154) | async def __stream__(self) -> AsyncIterator[ResponseStreamEvent[TextFo...
    method __aenter__ (line 161) | async def __aenter__(self) -> Self:
    method __aexit__ (line 164) | async def __aexit__(
    method close (line 172) | async def close(self) -> None:
    method get_final_response (line 180) | async def get_final_response(self) -> ParsedResponse[TextFormatT]:
    method until_done (line 191) | async def until_done(self) -> Self:
  class AsyncResponseStreamManager (line 197) | class AsyncResponseStreamManager(Generic[TextFormatT]):
    method __init__ (line 198) | def __init__(
    method __aenter__ (line 212) | async def __aenter__(self) -> AsyncResponseStream[TextFormatT]:
    method __aexit__ (line 224) | async def __aexit__(
  class ResponseStreamState (line 234) | class ResponseStreamState(Generic[TextFormatT]):
    method __init__ (line 235) | def __init__(
    method handle_event (line 247) | def handle_event(self, event: RawResponseStreamEvent) -> List[Response...
    method accumulate_event (line 325) | def accumulate_event(self, event: RawResponseStreamEvent) -> ParsedRes...
    method _create_initial_response (line 368) | def _create_initial_response(self, event: RawResponseStreamEvent) -> P...

FILE: src/openai/pagination.py
  class CursorPageItem (line 21) | class CursorPageItem(Protocol):
  class SyncPage (line 25) | class SyncPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
    method _get_page_items (line 32) | def _get_page_items(self) -> List[_T]:
    method next_page_info (line 39) | def next_page_info(self) -> None:
  class AsyncPage (line 47) | class AsyncPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
    method _get_page_items (line 54) | def _get_page_items(self) -> List[_T]:
    method next_page_info (line 61) | def next_page_info(self) -> None:
  class SyncCursorPage (line 69) | class SyncCursorPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
    method _get_page_items (line 74) | def _get_page_items(self) -> List[_T]:
    method has_next_page (line 81) | def has_next_page(self) -> bool:
    method next_page_info (line 89) | def next_page_info(self) -> Optional[PageInfo]:
  class AsyncCursorPage (line 102) | class AsyncCursorPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
    method _get_page_items (line 107) | def _get_page_items(self) -> List[_T]:
    method has_next_page (line 114) | def has_next_page(self) -> bool:
    method next_page_info (line 122) | def next_page_info(self) -> Optional[PageInfo]:
  class SyncConversationCursorPage (line 135) | class SyncConversationCursorPage(BaseSyncPage[_T], BasePage[_T], Generic...
    method _get_page_items (line 141) | def _get_page_items(self) -> List[_T]:
    method has_next_page (line 148) | def has_next_page(self) -> bool:
    method next_page_info (line 156) | def next_page_info(self) -> Optional[PageInfo]:
  class AsyncConversationCursorPage (line 164) | class AsyncConversationCursorPage(BaseAsyncPage[_T], BasePage[_T], Gener...
    method _get_page_items (line 170) | def _get_page_items(self) -> List[_T]:
    method has_next_page (line 177) | def has_next_page(self) -> bool:
    method next_page_info (line 185) | def next_page_info(self) -> Optional[PageInfo]:

FILE: src/openai/resources/audio/audio.py
  class Audio (line 35) | class Audio(SyncAPIResource):
    method transcriptions (line 37) | def transcriptions(self) -> Transcriptions:
    method translations (line 42) | def translations(self) -> Translations:
    method speech (line 47) | def speech(self) -> Speech:
    method with_raw_response (line 52) | def with_raw_response(self) -> AudioWithRawResponse:
    method with_streaming_response (line 62) | def with_streaming_response(self) -> AudioWithStreamingResponse:
  class AsyncAudio (line 71) | class AsyncAudio(AsyncAPIResource):
    method transcriptions (line 73) | def transcriptions(self) -> AsyncTranscriptions:
    method translations (line 78) | def translations(self) -> AsyncTranslations:
    method speech (line 83) | def speech(self) -> AsyncSpeech:
    method with_raw_response (line 88) | def with_raw_response(self) -> AsyncAudioWithRawResponse:
    method with_streaming_response (line 98) | def with_streaming_response(self) -> AsyncAudioWithStreamingResponse:
  class AudioWithRawResponse (line 107) | class AudioWithRawResponse:
    method __init__ (line 108) | def __init__(self, audio: Audio) -> None:
    method transcriptions (line 112) | def transcriptions(self) -> TranscriptionsWithRawResponse:
    method translations (line 117) | def translations(self) -> TranslationsWithRawResponse:
    method speech (line 122) | def speech(self) -> SpeechWithRawResponse:
  class AsyncAudioWithRawResponse (line 127) | class AsyncAudioWithRawResponse:
    method __init__ (line 128) | def __init__(self, audio: AsyncAudio) -> None:
    method transcriptions (line 132) | def transcriptions(self) -> AsyncTranscriptionsWithRawResponse:
    method translations (line 137) | def translations(self) -> AsyncTranslationsWithRawResponse:
    method speech (line 142) | def speech(self) -> AsyncSpeechWithRawResponse:
  class AudioWithStreamingResponse (line 147) | class AudioWithStreamingResponse:
    method __init__ (line 148) | def __init__(self, audio: Audio) -> None:
    method transcriptions (line 152) | def transcriptions(self) -> TranscriptionsWithStreamingResponse:
    method translations (line 157) | def translations(self) -> TranslationsWithStreamingResponse:
    method speech (line 162) | def speech(self) -> SpeechWithStreamingResponse:
  class AsyncAudioWithStreamingResponse (line 167) | class AsyncAudioWithStreamingResponse:
    method __init__ (line 168) | def __init__(self, audio: AsyncAudio) -> None:
    method transcriptions (line 172) | def transcriptions(self) -> AsyncTranscriptionsWithStreamingResponse:
    method translations (line 177) | def translations(self) -> AsyncTranslationsWithStreamingResponse:
    method speech (line 182) | def speech(self) -> AsyncSpeechWithStreamingResponse:

FILE: src/openai/resources/audio/speech.py
  class Speech (line 28) | class Speech(SyncAPIResource):
    method with_raw_response (line 32) | def with_raw_response(self) -> SpeechWithRawResponse:
    method with_streaming_response (line 42) | def with_streaming_response(self) -> SpeechWithStreamingResponse:
    method create (line 50) | def create(
  class AsyncSpeech (line 128) | class AsyncSpeech(AsyncAPIResource):
    method with_raw_response (line 132) | def with_raw_response(self) -> AsyncSpeechWithRawResponse:
    method with_streaming_response (line 142) | def with_streaming_response(self) -> AsyncSpeechWithStreamingResponse:
    method create (line 150) | async def create(
  class SpeechWithRawResponse (line 228) | class SpeechWithRawResponse:
    method __init__ (line 229) | def __init__(self, speech: Speech) -> None:
  class AsyncSpeechWithRawResponse (line 237) | class AsyncSpeechWithRawResponse:
    method __init__ (line 238) | def __init__(self, speech: AsyncSpeech) -> None:
  class SpeechWithStreamingResponse (line 246) | class SpeechWithStreamingResponse:
    method __init__ (line 247) | def __init__(self, speech: Speech) -> None:
  class AsyncSpeechWithStreamingResponse (line 256) | class AsyncSpeechWithStreamingResponse:
    method __init__ (line 257) | def __init__(self, speech: AsyncSpeech) -> None:

FILE: src/openai/resources/audio/transcriptions.py
  class Transcriptions (line 44) | class Transcriptions(SyncAPIResource):
    method with_raw_response (line 48) | def with_raw_response(self) -> TranscriptionsWithRawResponse:
    method with_streaming_response (line 58) | def with_streaming_response(self) -> TranscriptionsWithStreamingResponse:
    method create (line 67) | def create(
    method create (line 155) | def create(
    method create (line 176) | def create(
    method create (line 197) | def create(
    method create (line 218) | def create(
    method create (line 329) | def create(
    method create (line 440) | def create(
  class AsyncTranscriptions (line 501) | class AsyncTranscriptions(AsyncAPIResource):
    method with_raw_response (line 505) | def with_raw_response(self) -> AsyncTranscriptionsWithRawResponse:
    method with_streaming_response (line 515) | def with_streaming_response(self) -> AsyncTranscriptionsWithStreamingR...
    method create (line 524) | async def create(
    method create (line 630) | async def create(
    method create (line 651) | async def create(
    method create (line 672) | async def create(
    method create (line 783) | async def create(
    method create (line 894) | async def create(
  class TranscriptionsWithRawResponse (line 955) | class TranscriptionsWithRawResponse:
    method __init__ (line 956) | def __init__(self, transcriptions: Transcriptions) -> None:
  class AsyncTranscriptionsWithRawResponse (line 964) | class AsyncTranscriptionsWithRawResponse:
    method __init__ (line 965) | def __init__(self, transcriptions: AsyncTranscriptions) -> None:
  class TranscriptionsWithStreamingResponse (line 973) | class TranscriptionsWithStreamingResponse:
    method __init__ (line 974) | def __init__(self, transcriptions: Transcriptions) -> None:
  class AsyncTranscriptionsWithStreamingResponse (line 982) | class AsyncTranscriptionsWithStreamingResponse:
    method __init__ (line 983) | def __init__(self, transcriptions: AsyncTranscriptions) -> None:
  function _get_response_format_type (line 991) | def _get_response_format_type(

FILE: src/openai/resources/audio/translations.py
  class Translations (line 29) | class Translations(SyncAPIResource):
    method with_raw_response (line 33) | def with_raw_response(self) -> TranslationsWithRawResponse:
    method with_streaming_response (line 43) | def with_streaming_response(self) -> TranslationsWithStreamingResponse:
    method create (line 52) | def create(
    method create (line 69) | def create(
    method create (line 86) | def create(
    method create (line 102) | def create(
  class AsyncTranslations (line 174) | class AsyncTranslations(AsyncAPIResource):
    method with_raw_response (line 178) | def with_raw_response(self) -> AsyncTranslationsWithRawResponse:
    method with_streaming_response (line 188) | def with_streaming_response(self) -> AsyncTranslationsWithStreamingRes...
    method create (line 197) | async def create(
    method create (line 214) | async def create(
    method create (line 231) | async def create(
    method create (line 247) | async def create(
  class TranslationsWithRawResponse (line 319) | class TranslationsWithRawResponse:
    method __init__ (line 320) | def __init__(self, translations: Translations) -> None:
  class AsyncTranslationsWithRawResponse (line 328) | class AsyncTranslationsWithRawResponse:
    method __init__ (line 329) | def __init__(self, translations: AsyncTranslations) -> None:
  class TranslationsWithStreamingResponse (line 337) | class TranslationsWithStreamingResponse:
    method __init__ (line 338) | def __init__(self, translations: Translations) -> None:
  class AsyncTranslationsWithStreamingResponse (line 346) | class AsyncTranslationsWithStreamingResponse:
    method __init__ (line 347) | def __init__(self, translations: AsyncTranslations) -> None:
  function _get_response_format_type (line 355) | def _get_response_format_type(

FILE: src/openai/resources/batches.py
  class Batches (line 25) | class Batches(SyncAPIResource):
    method with_raw_response (line 29) | def with_raw_response(self) -> BatchesWithRawResponse:
    method with_streaming_response (line 39) | def with_streaming_response(self) -> BatchesWithStreamingResponse:
    method create (line 47) | def create(
    method retrieve (line 131) | def retrieve(
    method list (line 164) | def list(
    method cancel (line 216) | def cancel(
  class AsyncBatches (line 253) | class AsyncBatches(AsyncAPIResource):
    method with_raw_response (line 257) | def with_raw_response(self) -> AsyncBatchesWithRawResponse:
    method with_streaming_response (line 267) | def with_streaming_response(self) -> AsyncBatchesWithStreamingResponse:
    method create (line 275) | async def create(
    method retrieve (line 359) | async def retrieve(
    method list (line 392) | def list(
    method cancel (line 444) | async def cancel(
  class BatchesWithRawResponse (line 481) | class BatchesWithRawResponse:
    method __init__ (line 482) | def __init__(self, batches: Batches) -> None:
  class AsyncBatchesWithRawResponse (line 499) | class AsyncBatchesWithRawResponse:
    method __init__ (line 500) | def __init__(self, batches: AsyncBatches) -> None:
  class BatchesWithStreamingResponse (line 517) | class BatchesWithStreamingResponse:
    method __init__ (line 518) | def __init__(self, batches: Batches) -> None:
  class AsyncBatchesWithStreamingResponse (line 535) | class AsyncBatchesWithStreamingResponse:
    method __init__ (line 536) | def __init__(self, batches: AsyncBatches) -> None:

FILE: src/openai/resources/beta/assistants.py
  class Assistants (line 35) | class Assistants(SyncAPIResource):
    method with_raw_response (line 39) | def with_raw_response(self) -> AssistantsWithRawResponse:
    method with_streaming_response (line 49) | def with_streaming_response(self) -> AssistantsWithStreamingResponse:
    method create (line 58) | def create(
    method retrieve (line 191) | def retrieve(
    method update (line 226) | def update(
    method list (line 410) | def list(
    method delete (line 476) | def delete(
  class AsyncAssistants (line 511) | class AsyncAssistants(AsyncAPIResource):
    method with_raw_response (line 515) | def with_raw_response(self) -> AsyncAssistantsWithRawResponse:
    method with_streaming_response (line 525) | def with_streaming_response(self) -> AsyncAssistantsWithStreamingRespo...
    method create (line 534) | async def create(
    method retrieve (line 667) | async def retrieve(
    method update (line 702) | async def update(
    method list (line 886) | def list(
    method delete (line 952) | async def delete(
  class AssistantsWithRawResponse (line 987) | class AssistantsWithRawResponse:
    method __init__ (line 988) | def __init__(self, assistants: Assistants) -> None:
  class AsyncAssistantsWithRawResponse (line 1018) | class AsyncAssistantsWithRawResponse:
    method __init__ (line 1019) | def __init__(self, assistants: AsyncAssistants) -> None:
  class AssistantsWithStreamingResponse (line 1049) | class AssistantsWithStreamingResponse:
    method __init__ (line 1050) | def __init__(self, assistants: Assistants) -> None:
  class AsyncAssistantsWithStreamingResponse (line 1080) | class AsyncAssistantsWithStreamingResponse:
    method __init__ (line 1081) | def __init__(self, assistants: AsyncAssistants) -> None:

FILE: src/openai/resources/beta/beta.py
  class Beta (line 40) | class Beta(SyncAPIResource):
    method chat (line 42) | def chat(self) -> Chat:
    method realtime (line 46) | def realtime(self) -> Realtime:
    method chatkit (line 50) | def chatkit(self) -> ChatKit:
    method assistants (line 54) | def assistants(self) -> Assistants:
    method threads (line 59) | def threads(self) -> Threads:
    method with_raw_response (line 64) | def with_raw_response(self) -> BetaWithRawResponse:
    method with_streaming_response (line 74) | def with_streaming_response(self) -> BetaWithStreamingResponse:
  class AsyncBeta (line 83) | class AsyncBeta(AsyncAPIResource):
    method chat (line 85) | def chat(self) -> AsyncChat:
    method realtime (line 89) | def realtime(self) -> AsyncRealtime:
    method chatkit (line 93) | def chatkit(self) -> AsyncChatKit:
    method assistants (line 97) | def assistants(self) -> AsyncAssistants:
    method threads (line 102) | def threads(self) -> AsyncThreads:
    method with_raw_response (line 107) | def with_raw_response(self) -> AsyncBetaWithRawResponse:
    method with_streaming_response (line 117) | def with_streaming_response(self) -> AsyncBetaWithStreamingResponse:
  class BetaWithRawResponse (line 126) | class BetaWithRawResponse:
    method __init__ (line 127) | def __init__(self, beta: Beta) -> None:
    method chatkit (line 131) | def chatkit(self) -> ChatKitWithRawResponse:
    method assistants (line 135) | def assistants(self) -> AssistantsWithRawResponse:
    method threads (line 140) | def threads(self) -> ThreadsWithRawResponse:
  class AsyncBetaWithRawResponse (line 145) | class AsyncBetaWithRawResponse:
    method __init__ (line 146) | def __init__(self, beta: AsyncBeta) -> None:
    method chatkit (line 150) | def chatkit(self) -> AsyncChatKitWithRawResponse:
    method assistants (line 154) | def assistants(self) -> AsyncAssistantsWithRawResponse:
    method threads (line 159) | def threads(self) -> AsyncThreadsWithRawResponse:
  class BetaWithStreamingResponse (line 164) | class BetaWithStreamingResponse:
    method __init__ (line 165) | def __init__(self, beta: Beta) -> None:
    method chatkit (line 169) | def chatkit(self) -> ChatKitWithStreamingResponse:
    method assistants (line 173) | def assistants(self) -> AssistantsWithStreamingResponse:
    method threads (line 178) | def threads(self) -> ThreadsWithStreamingResponse:
  class AsyncBetaWithStreamingResponse (line 183) | class AsyncBetaWithStreamingResponse:
    method __init__ (line 184) | def __init__(self, beta: AsyncBeta) -> None:
    method chatkit (line 188) | def chatkit(self) -> AsyncChatKitWithStreamingResponse:
    method assistants (line 192) | def assistants(self) -> AsyncAssistantsWithStreamingResponse:
    method threads (line 197) | def threads(self) -> AsyncThreadsWithStreamingResponse:

FILE: src/openai/resources/beta/chatkit/chatkit.py
  class ChatKit (line 27) | class ChatKit(SyncAPIResource):
    method sessions (line 29) | def sessions(self) -> Sessions:
    method threads (line 33) | def threads(self) -> Threads:
    method with_raw_response (line 37) | def with_raw_response(self) -> ChatKitWithRawResponse:
    method with_streaming_response (line 47) | def with_streaming_response(self) -> ChatKitWithStreamingResponse:
  class AsyncChatKit (line 56) | class AsyncChatKit(AsyncAPIResource):
    method sessions (line 58) | def sessions(self) -> AsyncSessions:
    method threads (line 62) | def threads(self) -> AsyncThreads:
    method with_raw_response (line 66) | def with_raw_response(self) -> AsyncChatKitWithRawResponse:
    method with_streaming_response (line 76) | def with_streaming_response(self) -> AsyncChatKitWithStreamingResponse:
  class ChatKitWithRawResponse (line 85) | class ChatKitWithRawResponse:
    method __init__ (line 86) | def __init__(self, chatkit: ChatKit) -> None:
    method sessions (line 90) | def sessions(self) -> SessionsWithRawResponse:
    method threads (line 94) | def threads(self) -> ThreadsWithRawResponse:
  class AsyncChatKitWithRawResponse (line 98) | class AsyncChatKitWithRawResponse:
    method __init__ (line 99) | def __init__(self, chatkit: AsyncChatKit) -> None:
    method sessions (line 103) | def sessions(self) -> AsyncSessionsWithRawResponse:
    method threads (line 107) | def threads(self) -> AsyncThreadsWithRawResponse:
  class ChatKitWithStreamingResponse (line 111) | class ChatKitWithStreamingResponse:
    method __init__ (line 112) | def __init__(self, chatkit: ChatKit) -> None:
    method sessions (line 116) | def sessions(self) -> SessionsWithStreamingResponse:
    method threads (line 120) | def threads(self) -> ThreadsWithStreamingResponse:
  class AsyncChatKitWithStreamingResponse (line 124) | class AsyncChatKitWithStreamingResponse:
    method __init__ (line 125) | def __init__(self, chatkit: AsyncChatKit) -> None:
    method sessions (line 129) | def sessions(self) -> AsyncSessionsWithStreamingResponse:
    method threads (line 133) | def threads(self) -> AsyncThreadsWithStreamingResponse:

FILE: src/openai/resources/beta/chatkit/sessions.py
  class Sessions (line 30) | class Sessions(SyncAPIResource):
    method with_raw_response (line 32) | def with_raw_response(self) -> SessionsWithRawResponse:
    method with_streaming_response (line 42) | def with_streaming_response(self) -> SessionsWithStreamingResponse:
    method create (line 50) | def create(
    method cancel (line 108) | def cancel(
  class AsyncSessions (line 145) | class AsyncSessions(AsyncAPIResource):
    method with_raw_response (line 147) | def with_raw_response(self) -> AsyncSessionsWithRawResponse:
    method with_streaming_response (line 157) | def with_streaming_response(self) -> AsyncSessionsWithStreamingResponse:
    method create (line 165) | async def create(
    method cancel (line 223) | async def cancel(
  class SessionsWithRawResponse (line 260) | class SessionsWithRawResponse:
    method __init__ (line 261) | def __init__(self, sessions: Sessions) -> None:
  class AsyncSessionsWithRawResponse (line 272) | class AsyncSessionsWithRawResponse:
    method __init__ (line 273) | def __init__(self, sessions: AsyncSessions) -> None:
  class SessionsWithStreamingResponse (line 284) | class SessionsWithStreamingResponse:
    method __init__ (line 285) | def __init__(self, sessions: Sessions) -> None:
  class AsyncSessionsWithStreamingResponse (line 296) | class AsyncSessionsWithStreamingResponse:
    method __init__ (line 297) | def __init__(self, sessions: AsyncSessions) -> None:

FILE: src/openai/resources/beta/chatkit/threads.py
  class Threads (line 26) | class Threads(SyncAPIResource):
    method with_raw_response (line 28) | def with_raw_response(self) -> ThreadsWithRawResponse:
    method with_streaming_response (line 38) | def with_streaming_response(self) -> ThreadsWithStreamingResponse:
    method retrieve (line 46) | def retrieve(
    method list (line 80) | def list(
    method delete (line 143) | def delete(
    method list_items (line 177) | def list_items(
  class AsyncThreads (line 239) | class AsyncThreads(AsyncAPIResource):
    method with_raw_response (line 241) | def with_raw_response(self) -> AsyncThreadsWithRawResponse:
    method with_streaming_response (line 251) | def with_streaming_response(self) -> AsyncThreadsWithStreamingResponse:
    method retrieve (line 259) | async def retrieve(
    method list (line 293) | def list(
    method delete (line 356) | async def delete(
    method list_items (line 390) | def list_items(
  class ThreadsWithRawResponse (line 452) | class ThreadsWithRawResponse:
    method __init__ (line 453) | def __init__(self, threads: Threads) -> None:
  class AsyncThreadsWithRawResponse (line 470) | class AsyncThreadsWithRawResponse:
    method __init__ (line 471) | def __init__(self, threads: AsyncThreads) -> None:
  class ThreadsWithStreamingResponse (line 488) | class ThreadsWithStreamingResponse:
    method __init__ (line 489) | def __init__(self, threads: Threads) -> None:
  class AsyncThreadsWithStreamingResponse (line 506) | class AsyncThreadsWithStreamingResponse:
    method __init__ (line 507) | def __init__(self, threads: AsyncThreads) -> None:

FILE: src/openai/resources/beta/realtime/realtime.py
  class Realtime (line 65) | class Realtime(SyncAPIResource):
    method sessions (line 67) | def sessions(self) -> Sessions:
    method transcription_sessions (line 71) | def transcription_sessions(self) -> TranscriptionSessions:
    method with_raw_response (line 75) | def with_raw_response(self) -> RealtimeWithRawResponse:
    method with_streaming_response (line 85) | def with_streaming_response(self) -> RealtimeWithStreamingResponse:
    method connect (line 93) | def connect(
  class AsyncRealtime (line 121) | class AsyncRealtime(AsyncAPIResource):
    method sessions (line 123) | def sessions(self) -> AsyncSessions:
    method transcription_sessions (line 127) | def transcription_sessions(self) -> AsyncTranscriptionSessions:
    method with_raw_response (line 131) | def with_raw_response(self) -> AsyncRealtimeWithRawResponse:
    method with_streaming_response (line 141) | def with_streaming_response(self) -> AsyncRealtimeWithStreamingResponse:
    method connect (line 149) | def connect(
  class RealtimeWithRawResponse (line 177) | class RealtimeWithRawResponse:
    method __init__ (line 178) | def __init__(self, realtime: Realtime) -> None:
    method sessions (line 182) | def sessions(self) -> SessionsWithRawResponse:
    method transcription_sessions (line 186) | def transcription_sessions(self) -> TranscriptionSessionsWithRawResponse:
  class AsyncRealtimeWithRawResponse (line 190) | class AsyncRealtimeWithRawResponse:
    method __init__ (line 191) | def __init__(self, realtime: AsyncRealtime) -> None:
    method sessions (line 195) | def sessions(self) -> AsyncSessionsWithRawResponse:
    method transcription_sessions (line 199) | def transcription_sessions(self) -> AsyncTranscriptionSessionsWithRawR...
  class RealtimeWithStreamingResponse (line 203) | class RealtimeWithStreamingResponse:
    method __init__ (line 204) | def __init__(self, realtime: Realtime) -> None:
    method sessions (line 208) | def sessions(self) -> SessionsWithStreamingResponse:
    method transcription_sessions (line 212) | def transcription_sessions(self) -> TranscriptionSessionsWithStreaming...
  class AsyncRealtimeWithStreamingResponse (line 216) | class AsyncRealtimeWithStreamingResponse:
    method __init__ (line 217) | def __init__(self, realtime: AsyncRealtime) -> None:
    method sessions (line 221) | def sessions(self) -> AsyncSessionsWithStreamingResponse:
    method transcription_sessions (line 225) | def transcription_sessions(self) -> AsyncTranscriptionSessionsWithStre...
  class AsyncRealtimeConnection (line 229) | class AsyncRealtimeConnection:
    method __init__ (line 241) | def __init__(self, connection: AsyncWebsocketConnection) -> None:
    method __aiter__ (line 251) | async def __aiter__(self) -> AsyncIterator[RealtimeServerEvent]:
    method recv (line 264) | async def recv(self) -> RealtimeServerEvent:
    method recv_bytes (line 272) | async def recv_bytes(self) -> bytes:
    method send (line 284) | async def send(self, event: RealtimeClientEvent | RealtimeClientEventP...
    method close (line 292) | async def close(self, *, code: int = 1000, reason: str = "") -> None:
    method parse_event (line 295) | def parse_event(self, data: str | bytes) -> RealtimeServerEvent:
  class AsyncRealtimeConnectionManager (line 306) | class AsyncRealtimeConnectionManager:
    method __init__ (line 326) | def __init__(
    method __aenter__ (line 342) | async def __aenter__(self) -> AsyncRealtimeConnection:
    method _prepare_url (line 396) | def _prepare_url(self) -> httpx.URL:
    method __aexit__ (line 405) | async def __aexit__(
  class RealtimeConnection (line 412) | class RealtimeConnection:
    method __init__ (line 424) | def __init__(self, connection: WebsocketConnection) -> None:
    method __iter__ (line 434) | def __iter__(self) -> Iterator[RealtimeServerEvent]:
    method recv (line 447) | def recv(self) -> RealtimeServerEvent:
    method recv_bytes (line 455) | def recv_bytes(self) -> bytes:
    method send (line 467) | def send(self, event: RealtimeClientEvent | RealtimeClientEventParam) ...
    method close (line 475) | def close(self, *, code: int = 1000, reason: str = "") -> None:
    method parse_event (line 478) | def parse_event(self, data: str | bytes) -> RealtimeServerEvent:
  class RealtimeConnectionManager (line 489) | class RealtimeConnectionManager:
    method __init__ (line 509) | def __init__(
    method __enter__ (line 525) | def __enter__(self) -> RealtimeConnection:
    method _prepare_url (line 579) | def _prepare_url(self) -> httpx.URL:
    method __exit__ (line 588) | def __exit__(
  class BaseRealtimeConnectionResource (line 595) | class BaseRealtimeConnectionResource:
    method __init__ (line 596) | def __init__(self, connection: RealtimeConnection) -> None:
  class RealtimeSessionResource (line 600) | class RealtimeSessionResource(BaseRealtimeConnectionResource):
    method update (line 601) | def update(self, *, session: session_update_event_param.Session, event...
  class RealtimeResponseResource (line 622) | class RealtimeResponseResource(BaseRealtimeConnectionResource):
    method create (line 623) | def create(
    method cancel (line 653) | def cancel(self, *, event_id: str | NotGiven = NOT_GIVEN, response_id:...
  class RealtimeInputAudioBufferResource (line 668) | class RealtimeInputAudioBufferResource(BaseRealtimeConnectionResource):
    method clear (line 669) | def clear(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
    method commit (line 679) | def commit(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
    method append (line 696) | def append(self, *, audio: str, event_id: str | NotGiven = NOT_GIVEN) ...
  class RealtimeConversationResource (line 718) | class RealtimeConversationResource(BaseRealtimeConnectionResource):
    method item (line 720) | def item(self) -> RealtimeConversationItemResource:
  class RealtimeConversationItemResource (line 724) | class RealtimeConversationItemResource(BaseRealtimeConnectionResource):
    method delete (line 725) | def delete(self, *, item_id: str, event_id: str | NotGiven = NOT_GIVEN...
    method create (line 740) | def create(
    method truncate (line 770) | def truncate(
    method retrieve (line 802) | def retrieve(self, *, item_id: str, event_id: str | NotGiven = NOT_GIV...
  class RealtimeOutputAudioBufferResource (line 817) | class RealtimeOutputAudioBufferResource(BaseRealtimeConnectionResource):
    method clear (line 818) | def clear(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
  class RealtimeTranscriptionSessionResource (line 832) | class RealtimeTranscriptionSessionResource(BaseRealtimeConnectionResource):
    method update (line 833) | def update(
  class BaseAsyncRealtimeConnectionResource (line 845) | class BaseAsyncRealtimeConnectionResource:
    method __init__ (line 846) | def __init__(self, connection: AsyncRealtimeConnection) -> None:
  class AsyncRealtimeSessionResource (line 850) | class AsyncRealtimeSessionResource(BaseAsyncRealtimeConnectionResource):
    method update (line 851) | async def update(
  class AsyncRealtimeResponseResource (line 874) | class AsyncRealtimeResponseResource(BaseAsyncRealtimeConnectionResource):
    method create (line 875) | async def create(
    method cancel (line 905) | async def cancel(self, *, event_id: str | NotGiven = NOT_GIVEN, respon...
  class AsyncRealtimeInputAudioBufferResource (line 920) | class AsyncRealtimeInputAudioBufferResource(BaseAsyncRealtimeConnectionR...
    method clear (line 921) | async def clear(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
    method commit (line 931) | async def commit(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
    method append (line 948) | async def append(self, *, audio: str, event_id: str | NotGiven = NOT_G...
  class AsyncRealtimeConversationResource (line 970) | class AsyncRealtimeConversationResource(BaseAsyncRealtimeConnectionResou...
    method item (line 972) | def item(self) -> AsyncRealtimeConversationItemResource:
  class AsyncRealtimeConversationItemResource (line 976) | class AsyncRealtimeConversationItemResource(BaseAsyncRealtimeConnectionR...
    method delete (line 977) | async def delete(self, *, item_id: str, event_id: str | NotGiven = NOT...
    method create (line 992) | async def create(
    method truncate (line 1022) | async def truncate(
    method retrieve (line 1054) | async def retrieve(self, *, item_id: str, event_id: str | NotGiven = N...
  class AsyncRealtimeOutputAudioBufferResource (line 1069) | class AsyncRealtimeOutputAudioBufferResource(BaseAsyncRealtimeConnection...
    method clear (line 1070) | async def clear(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
  class AsyncRealtimeTranscriptionSessionResource (line 1084) | class AsyncRealtimeTranscriptionSessionResource(BaseAsyncRealtimeConnect...
    method update (line 1085) | async def update(

FILE: src/openai/resources/beta/realtime/sessions.py
  class Sessions (line 23) | class Sessions(SyncAPIResource):
    method with_raw_response (line 25) | def with_raw_response(self) -> SessionsWithRawResponse:
    method with_streaming_response (line 35) | def with_streaming_response(self) -> SessionsWithStreamingResponse:
    method create (line 43) | def create(
  class AsyncSessions (line 207) | class AsyncSessions(AsyncAPIResource):
    method with_raw_response (line 209) | def with_raw_response(self) -> AsyncSessionsWithRawResponse:
    method with_streaming_response (line 219) | def with_streaming_response(self) -> AsyncSessionsWithStreamingResponse:
    method create (line 227) | async def create(
  class SessionsWithRawResponse (line 391) | class SessionsWithRawResponse:
    method __init__ (line 392) | def __init__(self, sessions: Sessions) -> None:
  class AsyncSessionsWithRawResponse (line 400) | class AsyncSessionsWithRawResponse:
    method __init__ (line 401) | def __init__(self, sessions: AsyncSessions) -> None:
  class SessionsWithStreamingResponse (line 409) | class SessionsWithStreamingResponse:
    method __init__ (line 410) | def __init__(self, sessions: Sessions) -> None:
  class AsyncSessionsWithStreamingResponse (line 418) | class AsyncSessionsWithStreamingResponse:
    method __init__ (line 419) | def __init__(self, sessions: AsyncSessions) -> None:

FILE: src/openai/resources/beta/realtime/transcription_sessions.py
  class TranscriptionSessions (line 23) | class TranscriptionSessions(SyncAPIResource):
    method with_raw_response (line 25) | def with_raw_response(self) -> TranscriptionSessionsWithRawResponse:
    method with_streaming_response (line 35) | def with_streaming_response(self) -> TranscriptionSessionsWithStreamin...
    method create (line 43) | def create(
  class AsyncTranscriptionSessions (line 136) | class AsyncTranscriptionSessions(AsyncAPIResource):
    method with_raw_response (line 138) | def with_raw_response(self) -> AsyncTranscriptionSessionsWithRawResponse:
    method with_streaming_response (line 148) | def with_streaming_response(self) -> AsyncTranscriptionSessionsWithStr...
    method create (line 156) | async def create(
  class TranscriptionSessionsWithRawResponse (line 249) | class TranscriptionSessionsWithRawResponse:
    method __init__ (line 250) | def __init__(self, transcription_sessions: TranscriptionSessions) -> N...
  class AsyncTranscriptionSessionsWithRawResponse (line 258) | class AsyncTranscriptionSessionsWithRawResponse:
    method __init__ (line 259) | def __init__(self, transcription_sessions: AsyncTranscriptionSessions)...
  class TranscriptionSessionsWithStreamingResponse (line 267) | class TranscriptionSessionsWithStreamingResponse:
    method __init__ (line 268) | def __init__(self, transcription_sessions: TranscriptionSessions) -> N...
  class AsyncTranscriptionSessionsWithStreamingResponse (line 276) | class AsyncTranscriptionSessionsWithStreamingResponse:
    method __init__ (line 277) | def __init__(self, transcription_sessions: AsyncTranscriptionSessions)...

FILE: src/openai/resources/beta/threads/messages.py
  class Messages (line 31) | class Messages(SyncAPIResource):
    method with_raw_response (line 35) | def with_raw_response(self) -> MessagesWithRawResponse:
    method with_streaming_response (line 45) | def with_streaming_response(self) -> MessagesWithStreamingResponse:
    method create (line 54) | def create(
    method retrieve (line 121) | def retrieve(
    method update (line 159) | def update(
    method list (line 206) | def list(
    method delete (line 278) | def delete(
  class AsyncMessages (line 316) | class AsyncMessages(AsyncAPIResource):
    method with_raw_response (line 320) | def with_raw_response(self) -> AsyncMessagesWithRawResponse:
    method with_streaming_response (line 330) | def with_streaming_response(self) -> AsyncMessagesWithStreamingResponse:
    method create (line 339) | async def create(
    method retrieve (line 406) | async def retrieve(
    method update (line 444) | async def update(
    method list (line 491) | def list(
    method delete (line 563) | async def delete(
  class MessagesWithRawResponse (line 601) | class MessagesWithRawResponse:
    method __init__ (line 602) | def __init__(self, messages: Messages) -> None:
  class AsyncMessagesWithRawResponse (line 632) | class AsyncMessagesWithRawResponse:
    method __init__ (line 633) | def __init__(self, messages: AsyncMessages) -> None:
  class MessagesWithStreamingResponse (line 663) | class MessagesWithStreamingResponse:
    method __init__ (line 664) | def __init__(self, messages: Messages) -> None:
  class AsyncMessagesWithStreamingResponse (line 694) | class AsyncMessagesWithStreamingResponse:
    method __init__ (line 695) | def __init__(self, messages: AsyncMessages) -> None:

FILE: src/openai/resources/beta/threads/runs/runs.py
  class Runs (line 61) | class Runs(SyncAPIResource):
    method steps (line 65) | def steps(self) -> Steps:
    method with_raw_response (line 70) | def with_raw_response(self) -> RunsWithRawResponse:
    method with_streaming_response (line 80) | def with_streaming_response(self) -> RunsWithStreamingResponse:
    method create (line 90) | def create(
    method create (line 248) | def create(
    method create (line 406) | def create(
    method create (line 564) | def create(
    method retrieve (line 634) | def retrieve(
    method update (line 672) | def update(
    method list (line 719) | def list(
    method cancel (line 787) | def cancel(
    method create_and_poll (line 825) | def create_and_poll(
    method create_and_stream (line 897) | def create_and_stream(
    method create_and_stream (line 929) | def create_and_stream(
    method create_and_stream (line 961) | def create_and_stream(
    method poll (line 1034) | def poll(
    method stream (line 1081) | def stream(
    method stream (line 1114) | def stream(
    method stream (line 1147) | def stream(
    method submit_tool_outputs (line 1226) | def submit_tool_outputs(
    method submit_tool_outputs (line 1265) | def submit_tool_outputs(
    method submit_tool_outputs (line 1304) | def submit_tool_outputs(
    method submit_tool_outputs (line 1344) | def submit_tool_outputs(
    method submit_tool_outputs_and_poll (line 1387) | def submit_tool_outputs_and_poll(
    method submit_tool_outputs_stream (line 1428) | def submit_tool_outputs_stream(
    method submit_tool_outputs_stream (line 1450) | def submit_tool_outputs_stream(
    method submit_tool_outputs_stream (line 1472) | def submit_tool_outputs_stream(
  class AsyncRuns (line 1523) | class AsyncRuns(AsyncAPIResource):
    method steps (line 1527) | def steps(self) -> AsyncSteps:
    method with_raw_response (line 1532) | def with_raw_response(self) -> AsyncRunsWithRawResponse:
    method with_streaming_response (line 1542) | def with_streaming_response(self) -> AsyncRunsWithStreamingResponse:
    method create (line 1552) | async def create(
    method create (line 1710) | async def create(
    method create (line 1868) | async def create(
    method create (line 2027) | async def create(
    method retrieve (line 2097) | async def retrieve(
    method update (line 2135) | async def update(
    method list (line 2182) | def list(
    method cancel (line 2250) | async def cancel(
    method create_and_poll (line 2288) | async def create_and_poll(
    method create_and_stream (line 2360) | def create_and_stream(
    method create_and_stream (line 2391) | def create_and_stream(
    method create_and_stream (line 2422) | def create_and_stream(
    method poll (line 2495) | async def poll(
    method stream (line 2542) | def stream(
    method stream (line 2574) | def stream(
    method stream (line 2607) | def stream(
    method submit_tool_outputs (line 2688) | async def submit_tool_outputs(
    method submit_tool_outputs (line 2727) | async def submit_tool_outputs(
    method submit_tool_outputs (line 2766) | async def submit_tool_outputs(
    method submit_tool_outputs (line 2806) | async def submit_tool_outputs(
    method submit_tool_outputs_and_poll (line 2849) | async def submit_tool_outputs_and_poll(
    method submit_tool_outputs_stream (line 2890) | def submit_tool_outputs_stream(
    method submit_tool_outputs_stream (line 2912) | def submit_tool_outputs_stream(
    method submit_tool_outputs_stream (line 2934) | def submit_tool_outputs_stream(
  class RunsWithRawResponse (line 2987) | class RunsWithRawResponse:
    method __init__ (line 2988) | def __init__(self, runs: Runs) -> None:
    method steps (line 3023) | def steps(self) -> StepsWithRawResponse:
  class AsyncRunsWithRawResponse (line 3028) | class AsyncRunsWithRawResponse:
    method __init__ (line 3029) | def __init__(self, runs: AsyncRuns) -> None:
    method steps (line 3064) | def steps(self) -> AsyncStepsWithRawResponse:
  class RunsWithStreamingResponse (line 3069) | class RunsWithStreamingResponse:
    method __init__ (line 3070) | def __init__(self, runs: Runs) -> None:
    method steps (line 3105) | def steps(self) -> StepsWithStreamingResponse:
  class AsyncRunsWithStreamingResponse (line 3110) | class AsyncRunsWithStreamingResponse:
    method __init__ (line 3111) | def __init__(self, runs: AsyncRuns) -> None:
    method steps (line 3146) | def steps(self) -> AsyncStepsWithStreamingResponse:

FILE: src/openai/resources/beta/threads/runs/steps.py
  class Steps (line 26) | class Steps(SyncAPIResource):
    method with_raw_response (line 30) | def with_raw_response(self) -> StepsWithRawResponse:
    method with_streaming_response (line 40) | def with_streaming_response(self) -> StepsWithStreamingResponse:
    method retrieve (line 49) | def retrieve(
    method list (line 103) | def list(
  class AsyncSteps (line 184) | class AsyncSteps(AsyncAPIResource):
    method with_raw_response (line 188) | def with_raw_response(self) -> AsyncStepsWithRawResponse:
    method with_streaming_response (line 198) | def with_streaming_response(self) -> AsyncStepsWithStreamingResponse:
    method retrieve (line 207) | async def retrieve(
    method list (line 261) | def list(
  class StepsWithRawResponse (line 342) | class StepsWithRawResponse:
    method __init__ (line 343) | def __init__(self, steps: Steps) -> None:
  class AsyncStepsWithRawResponse (line 358) | class AsyncStepsWithRawResponse:
    method __init__ (line 359) | def __init__(self, steps: AsyncSteps) -> None:
  class StepsWithStreamingResponse (line 374) | class StepsWithStreamingResponse:
    method __init__ (line 375) | def __init__(self, steps: Steps) -> None:
  class AsyncStepsWithStreamingResponse (line 390) | class AsyncStepsWithStreamingResponse:
    method __init__ (line 391) | def __init__(self, steps: AsyncSteps) -> None:

FILE: src/openai/resources/beta/threads/threads.py
  class Threads (line 62) | class Threads(SyncAPIResource):
    method runs (line 66) | def runs(self) -> Runs:
    method messages (line 71) | def messages(self) -> Messages:
    method with_raw_response (line 76) | def with_raw_response(self) -> ThreadsWithRawResponse:
    method with_streaming_response (line 86) | def with_streaming_response(self) -> ThreadsWithStreamingResponse:
    method create (line 95) | def create(
    method retrieve (line 153) | def retrieve(
    method update (line 188) | def update(
    method delete (line 244) | def delete(
    method create_and_run (line 280) | def create_and_run(
    method create_and_run (line 414) | def create_and_run(
    method create_and_run (line 548) | def create_and_run(
    method create_and_run (line 683) | def create_and_run(
    method create_and_run_poll (line 747) | def create_and_run_poll(
    method create_and_run_stream (line 803) | def create_and_run_stream(
    method create_and_run_stream (line 832) | def create_and_run_stream(
    method create_and_run_stream (line 861) | def create_and_run_stream(
  class AsyncThreads (line 928) | class AsyncThreads(AsyncAPIResource):
    method runs (line 932) | def runs(self) -> AsyncRuns:
    method messages (line 937) | def messages(self) -> AsyncMessages:
    method with_raw_response (line 942) | def with_raw_response(self) -> AsyncThreadsWithRawResponse:
    method with_streaming_response (line 952) | def with_streaming_response(self) -> AsyncThreadsWithStreamingResponse:
    method create (line 961) | async def create(
    method retrieve (line 1019) | async def retrieve(
    method update (line 1054) | async def update(
    method delete (line 1110) | async def delete(
    method create_and_run (line 1146) | async def create_and_run(
    method create_and_run (line 1280) | async def create_and_run(
    method create_and_run (line 1414) | async def create_and_run(
    method create_and_run (line 1549) | async def create_and_run(
    method create_and_run_poll (line 1613) | async def create_and_run_poll(
    method create_and_run_stream (line 1671) | def create_and_run_stream(
    method create_and_run_stream (line 1700) | def create_and_run_stream(
    method create_and_run_stream (line 1729) | def create_and_run_stream(
  class ThreadsWithRawResponse (line 1798) | class ThreadsWithRawResponse:
    method __init__ (line 1799) | def __init__(self, threads: Threads) -> None:
    method runs (line 1829) | def runs(self) -> RunsWithRawResponse:
    method messages (line 1834) | def messages(self) -> MessagesWithRawResponse:
  class AsyncThreadsWithRawResponse (line 1839) | class AsyncThreadsWithRawResponse:
    method __init__ (line 1840) | def __init__(self, threads: AsyncThreads) -> None:
    method runs (line 1870) | def runs(self) -> AsyncRunsWithRawResponse:
    method messages (line 1875) | def messages(self) -> AsyncMessagesWithRawResponse:
  class ThreadsWithStreamingResponse (line 1880) | class ThreadsWithStreamingResponse:
    method __init__ (line 1881) | def __init__(self, threads: Threads) -> None:
    method runs (line 1911) | def runs(self) -> RunsWithStreamingResponse:
    method messages (line 1916) | def messages(self) -> MessagesWithStreamingResponse:
  class AsyncThreadsWithStreamingResponse (line 1921) | class AsyncThreadsWithStreamingResponse:
    method __init__ (line 1922) | def __init__(self, threads: AsyncThreads) -> None:
    method runs (line 1952) | def runs(self) -> AsyncRunsWithStreamingResponse:
    method messages (line 1957) | def messages(self) -> AsyncMessagesWithStreamingResponse:

FILE: src/openai/resources/chat/chat.py
  class Chat (line 19) | class Chat(SyncAPIResource):
    method completions (line 21) | def completions(self) -> Completions:
    method with_raw_response (line 28) | def with_raw_response(self) -> ChatWithRawResponse:
    method with_streaming_response (line 38) | def with_streaming_response(self) -> ChatWithStreamingResponse:
  class AsyncChat (line 47) | class AsyncChat(AsyncAPIResource):
    method completions (line 49) | def completions(self) -> AsyncCompletions:
    method with_raw_response (line 56) | def with_raw_response(self) -> AsyncChatWithRawResponse:
    method with_streaming_response (line 66) | def with_streaming_response(self) -> AsyncChatWithStreamingResponse:
  class ChatWithRawResponse (line 75) | class ChatWithRawResponse:
    method __init__ (line 76) | def __init__(self, chat: Chat) -> None:
    method completions (line 80) | def completions(self) -> CompletionsWithRawResponse:
  class AsyncChatWithRawResponse (line 87) | class AsyncChatWithRawResponse:
    method __init__ (line 88) | def __init__(self, chat: AsyncChat) -> None:
    method completions (line 92) | def completions(self) -> AsyncCompletionsWithRawResponse:
  class ChatWithStreamingResponse (line 99) | class ChatWithStreamingResponse:
    method __init__ (line 100) | def __init__(self, chat: Chat) -> None:
    method completions (line 104) | def completions(self) -> CompletionsWithStreamingResponse:
  class AsyncChatWithStreamingResponse (line 111) | class AsyncChatWithStreamingResponse:
    method __init__ (line 112) | def __init__(self, chat: AsyncChat) -> None:
    method completions (line 116) | def completions(self) -> AsyncCompletionsWithStreamingResponse:

FILE: src/openai/resources/chat/completions/completions.py
  class Completions (line 60) | class Completions(SyncAPIResource):
    method messages (line 66) | def messages(self) -> Messages:
    method with_raw_response (line 73) | def with_raw_response(self) -> CompletionsWithRawResponse:
    method with_streaming_response (line 83) | def with_streaming_response(self) -> CompletionsWithStreamingResponse:
    method parse (line 91) | def parse(
    method create (line 247) | def create(
    method create (line 553) | def create(
    method create (line 859) | def create(
    method create (line 1165) | def create(
    method retrieve (line 1263) | def retrieve(
    method update (line 1298) | def update(
    method list (line 1343) | def list(
    method delete (line 1408) | def delete(
    method stream (line 1443) | def stream(
  class AsyncCompletions (line 1563) | class AsyncCompletions(AsyncAPIResource):
    method messages (line 1569) | def messages(self) -> AsyncMessages:
    method with_raw_response (line 1576) | def with_raw_response(self) -> AsyncCompletionsWithRawResponse:
    method with_streaming_response (line 1586) | def with_streaming_response(self) -> AsyncCompletionsWithStreamingResp...
    method parse (line 1594) | async def parse(
    method create (line 1750) | async def create(
    method create (line 2056) | async def create(
    method create (line 2362) | async def create(
    method create (line 2668) | async def create(
    method retrieve (line 2766) | async def retrieve(
    method update (line 2801) | async def update(
    method list (line 2846) | def list(
    method delete (line 2911) | async def delete(
    method stream (line 2946) | def stream(
  class CompletionsWithRawResponse (line 3067) | class CompletionsWithRawResponse:
    method __init__ (line 3068) | def __init__(self, completions: Completions) -> None:
    method messages (line 3091) | def messages(self) -> MessagesWithRawResponse:
  class AsyncCompletionsWithRawResponse (line 3098) | class AsyncCompletionsWithRawResponse:
    method __init__ (line 3099) | def __init__(self, completions: AsyncCompletions) -> None:
    method messages (line 3122) | def messages(self) -> AsyncMessagesWithRawResponse:
  class CompletionsWithStreamingResponse (line 3129) | class CompletionsWithStreamingResponse:
    method __init__ (line 3130) | def __init__(self, completions: Completions) -> None:
    method messages (line 3153) | def messages(self) -> MessagesWithStreamingResponse:
  class AsyncCompletionsWithStreamingResponse (line 3160) | class AsyncCompletionsWithStreamingResponse:
    method __init__ (line 3161) | def __init__(self, completions: AsyncCompletions) -> None:
    method messages (line 3184) | def messages(self) -> AsyncMessagesWithStreamingResponse:
  function validate_response_format (line 3191) | def validate_response_format(response_format: object) -> None:

FILE: src/openai/resources/chat/completions/messages.py
  class Messages (line 23) | class Messages(SyncAPIResource):
    method with_raw_response (line 29) | def with_raw_response(self) -> MessagesWithRawResponse:
    method with_streaming_response (line 39) | def with_streaming_response(self) -> MessagesWithStreamingResponse:
    method list (line 47) | def list(
  class AsyncMessages (line 105) | class AsyncMessages(AsyncAPIResource):
    method with_raw_response (line 111) | def with_raw_response(self) -> AsyncMessagesWithRawResponse:
    method with_streaming_response (line 121) | def with_streaming_response(self) -> AsyncMessagesWithStreamingResponse:
    method list (line 129) | def list(
  class MessagesWithRawResponse (line 187) | class MessagesWithRawResponse:
    method __init__ (line 188) | def __init__(self, messages: Messages) -> None:
  class AsyncMessagesWithRawResponse (line 196) | class AsyncMessagesWithRawResponse:
    method __init__ (line 197) | def __init__(self, messages: AsyncMessages) -> None:
  class MessagesWithStreamingResponse (line 205) | class MessagesWithStreamingResponse:
    method __init__ (line 206) | def __init__(self, messages: Messages) -> None:
  class AsyncMessagesWithStreamingResponse (line 214) | class AsyncMessagesWithStreamingResponse:
    method __init__ (line 215) | def __init__(self, messages: AsyncMessages) -> None:

FILE: src/openai/resources/completions.py
  class Completions (line 27) | class Completions(SyncAPIResource):
    method with_raw_response (line 33) | def with_raw_response(self) -> CompletionsWithRawResponse:
    method with_streaming_response (line 43) | def with_streaming_response(self) -> CompletionsWithStreamingResponse:
    method create (line 52) | def create(
    method create (line 210) | def create(
    method create (line 368) | def create(
    method create (line 526) | def create(
  class AsyncCompletions (line 590) | class AsyncCompletions(AsyncAPIResource):
    method with_raw_response (line 596) | def with_raw_response(self) -> AsyncCompletionsWithRawResponse:
    method with_streaming_response (line 606) | def with_streaming_response(self) -> AsyncCompletionsWithStreamingResp...
    method create (line 615) | async def create(
    method create (line 773) | async def create(
    method create (line 931) | async def create(
    method create (line 1089) | async def create(
  class CompletionsWithRawResponse (line 1153) | class CompletionsWithRawResponse:
    method __init__ (line 1154) | def __init__(self, completions: Completions) -> None:
  class AsyncCompletionsWithRawResponse (line 1162) | class AsyncCompletionsWithRawResponse:
    method __init__ (line 1163) | def __init__(self, completions: AsyncCompletions) -> None:
  class CompletionsWithStreamingResponse (line 1171) | class CompletionsWithStreamingResponse:
    method __init__ (line 1172) | def __init__(self, completions: Completions) -> None:
  class AsyncCompletionsWithStreamingResponse (line 1180) | class AsyncCompletionsWithStreamingResponse:
    method __init__ (line 1181) | def __init__(self, completions: AsyncCompletions) -> None:

FILE: src/openai/resources/containers/containers.py
  class Containers (line 34) | class Containers(SyncAPIResource):
    method files (line 36) | def files(self) -> Files:
    method with_raw_response (line 40) | def with_raw_response(self) -> ContainersWithRawResponse:
    method with_streaming_response (line 50) | def with_streaming_response(self) -> ContainersWithStreamingResponse:
    method create (line 58) | def create(
    method retrieve (line 117) | def retrieve(
    method list (line 150) | def list(
    method delete (line 211) | def delete(
  class AsyncContainers (line 246) | class AsyncContainers(AsyncAPIResource):
    method files (line 248) | def files(self) -> AsyncFiles:
    method with_raw_response (line 252) | def with_raw_response(self) -> AsyncContainersWithRawResponse:
    method with_streaming_response (line 262) | def with_streaming_response(self) -> AsyncContainersWithStreamingRespo...
    method create (line 270) | async def create(
    method retrieve (line 329) | async def retrieve(
    method list (line 362) | def list(
    method delete (line 423) | async def delete(
  class ContainersWithRawResponse (line 458) | class ContainersWithRawResponse:
    method __init__ (line 459) | def __init__(self, containers: Containers) -> None:
    method files (line 476) | def files(self) -> FilesWithRawResponse:
  class AsyncContainersWithRawResponse (line 480) | class AsyncContainersWithRawResponse:
    method __init__ (line 481) | def __init__(self, containers: AsyncContainers) -> None:
    method files (line 498) | def files(self) -> AsyncFilesWithRawResponse:
  class ContainersWithStreamingResponse (line 502) | class ContainersWithStreamingResponse:
    method __init__ (line 503) | def __init__(self, containers: Containers) -> None:
    method files (line 520) | def files(self) -> FilesWithStreamingResponse:
  class AsyncContainersWithStreamingResponse (line 524) | class AsyncContainersWithStreamingResponse:
    method __init__ (line 525) | def __init__(self, containers: AsyncContainers) -> None:
    method files (line 542) | def files(self) -> AsyncFilesWithStreamingResponse:

FILE: src/openai/resources/containers/files/content.py
  class Content (line 22) | class Content(SyncAPIResource):
    method with_raw_response (line 24) | def with_raw_response(self) -> ContentWithRawResponse:
    method with_streaming_response (line 34) | def with_streaming_response(self) -> ContentWithStreamingResponse:
    method retrieve (line 42) | def retrieve(
  class AsyncContent (line 80) | class AsyncContent(AsyncAPIResource):
    method with_raw_response (line 82) | def with_raw_response(self) -> AsyncContentWithRawResponse:
    method with_streaming_response (line 92) | def with_streaming_response(self) -> AsyncContentWithStreamingResponse:
    method retrieve (line 100) | async def retrieve(
  class ContentWithRawResponse (line 138) | class ContentWithRawResponse:
    method __init__ (line 139) | def __init__(self, content: Content) -> None:
  class AsyncContentWithRawResponse (line 147) | class AsyncContentWithRawResponse:
    method __init__ (line 148) | def __init__(self, content: AsyncContent) -> None:
  class ContentWithStreamingResponse (line 156) | class ContentWithStreamingResponse:
    method __init__ (line 157) | def __init__(self, content: Content) -> None:
  class AsyncContentWithStreamingResponse (line 166) | class AsyncContentWithStreamingResponse:
    method __init__ (line 167) | def __init__(self, content: AsyncContent) -> None:

FILE: src/openai/resources/containers/files/files.py
  class Files (line 34) | class Files(SyncAPIResource):
    method content (line 36) | def content(self) -> Content:
    method with_raw_response (line 40) | def with_raw_response(self) -> FilesWithRawResponse:
    method with_streaming_response (line 50) | def with_streaming_response(self) -> FilesWithStreamingResponse:
    method create (line 58) | def create(
    method retrieve (line 114) | def retrieve(
    method list (line 150) | def list(
    method delete (line 210) | def delete(
  class AsyncFiles (line 248) | class AsyncFiles(AsyncAPIResource):
    method content (line 250) | def content(self) -> AsyncContent:
    method with_raw_response (line 254) | def with_raw_response(self) -> AsyncFilesWithRawResponse:
    method with_streaming_response (line 264) | def with_streaming_response(self) -> AsyncFilesWithStreamingResponse:
    method create (line 272) | async def create(
    method retrieve (line 328) | async def retrieve(
    method list (line 364) | def list(
    method delete (line 424) | async def delete(
  class FilesWithRawResponse (line 462) | class FilesWithRawResponse:
    method __init__ (line 463) | def __init__(self, files: Files) -> None:
    method content (line 480) | def content(self) -> ContentWithRawResponse:
  class AsyncFilesWithRawResponse (line 484) | class AsyncFilesWithRawResponse:
    method __init__ (line 485) | def __init__(self, files: AsyncFiles) -> None:
    method content (line 502) | def content(self) -> AsyncContentWithRawResponse:
  class FilesWithStreamingResponse (line 506) | class FilesWithStreamingResponse:
    method __init__ (line 507) | def __init__(self, files: Files) -> None:
    method content (line 524) | def content(self) -> ContentWithStreamingResponse:
  class AsyncFilesWithStreamingResponse (line 528) | class AsyncFilesWithStreamingResponse:
    method __init__ (line 529) | def __init__(self, files: AsyncFiles) -> None:
    method content (line 546) | def content(self) -> AsyncContentWithStreamingResponse:

FILE: src/openai/resources/conversations/conversations.py
  class Conversations (line 33) | class Conversations(SyncAPIResource):
    method items (line 37) | def items(self) -> Items:
    method with_raw_response (line 42) | def with_raw_response(self) -> ConversationsWithRawResponse:
    method with_streaming_response (line 52) | def with_streaming_response(self) -> ConversationsWithStreamingResponse:
    method create (line 60) | def create(
    method retrieve (line 109) | def retrieve(
    method update (line 142) | def update(
    method delete (line 184) | def delete(
  class AsyncConversations (line 219) | class AsyncConversations(AsyncAPIResource):
    method items (line 223) | def items(self) -> AsyncItems:
    method with_raw_response (line 228) | def with_raw_response(self) -> AsyncConversationsWithRawResponse:
    method with_streaming_response (line 238) | def with_streaming_response(self) -> AsyncConversationsWithStreamingRe...
    method create (line 246) | async def create(
    method retrieve (line 295) | async def retrieve(
    method update (line 328) | async def update(
    method delete (line 372) | async def delete(
  class ConversationsWithRawResponse (line 407) | class ConversationsWithRawResponse:
    method __init__ (line 408) | def __init__(self, conversations: Conversations) -> None:
    method items (line 425) | def items(self) -> ItemsWithRawResponse:
  class AsyncConversationsWithRawResponse (line 430) | class AsyncConversationsWithRawResponse:
    method __init__ (line 431) | def __init__(self, conversations: AsyncConversations) -> None:
    method items (line 448) | def items(self) -> AsyncItemsWithRawResponse:
  class ConversationsWithStreamingResponse (line 453) | class ConversationsWithStreamingResponse:
    method __init__ (line 454) | def __init__(self, conversations: Conversations) -> None:
    method items (line 471) | def items(self) -> ItemsWithStreamingResponse:
  class AsyncConversationsWithStreamingResponse (line 476) | class AsyncConversationsWithStreamingResponse:
    method __init__ (line 477) | def __init__(self, conversations: AsyncConversations) -> None:
    method items (line 494) | def items(self) -> AsyncItemsWithStreamingResponse:

FILE: src/openai/resources/conversations/items.py
  class Items (line 28) | class Items(SyncAPIResource):
    method with_raw_response (line 32) | def with_raw_response(self) -> ItemsWithRawResponse:
    method with_streaming_response (line 42) | def with_streaming_response(self) -> ItemsWithStreamingResponse:
    method create (line 50) | def create(
    method retrieve (line 96) | def retrieve(
    method list (line 144) | def list(
    method delete (line 223) | def delete(
  class AsyncItems (line 260) | class AsyncItems(AsyncAPIResource):
    method with_raw_response (line 264) | def with_raw_response(self) -> AsyncItemsWithRawResponse:
    method with_streaming_response (line 274) | def with_streaming_response(self) -> AsyncItemsWithStreamingResponse:
    method create (line 282) | async def create(
    method retrieve (line 328) | async def retrieve(
    method list (line 376) | def list(
    method delete (line 455) | async def delete(
  class ItemsWithRawResponse (line 492) | class ItemsWithRawResponse:
    method __init__ (line 493) | def __init__(self, items: Items) -> None:
  class AsyncItemsWithRawResponse (line 510) | class AsyncItemsWithRawResponse:
    method __init__ (line 511) | def __init__(self, items: AsyncItems) -> None:
  class ItemsWithStreamingResponse (line 528) | class ItemsWithStreamingResponse:
    method __init__ (line 529) | def __init__(self, items: Items) -> None:
  class AsyncItemsWithStreamingResponse (line 546) | class AsyncItemsWithStreamingResponse:
    method __init__ (line 547) | def __init__(self, items: AsyncItems) -> None:

FILE: src/openai/resources/embeddings.py
  class Embeddings (line 27) | class Embeddings(SyncAPIResource):
    method with_raw_response (line 33) | def with_raw_response(self) -> EmbeddingsWithRawResponse:
    method with_streaming_response (line 43) | def with_streaming_response(self) -> EmbeddingsWithStreamingResponse:
    method create (line 51) | def create(
  class AsyncEmbeddings (line 150) | class AsyncEmbeddings(AsyncAPIResource):
    method with_raw_response (line 156) | def with_raw_response(self) -> AsyncEmbeddingsWithRawResponse:
    method with_streaming_response (line 166) | def with_streaming_response(self) -> AsyncEmbeddingsWithStreamingRespo...
    method create (line 174) | async def create(
  class EmbeddingsWithRawResponse (line 273) | class EmbeddingsWithRawResponse:
    method __init__ (line 274) | def __init__(self, embeddings: Embeddings) -> None:
  class AsyncEmbeddingsWithRawResponse (line 282) | class AsyncEmbeddingsWithRawResponse:
    method __init__ (line 283) | def __init__(self, embeddings: AsyncEmbeddings) -> None:
  class EmbeddingsWithStreamingResponse (line 291) | class EmbeddingsWithStreamingResponse:
    method __init__ (line 292) | def __init__(self, embeddings: Embeddings) -> None:
  class AsyncEmbeddingsWithStreamingResponse (line 300) | class AsyncEmbeddingsWithStreamingResponse:
    method __init__ (line 301) | def __init__(self, embeddings: AsyncEmbeddings) -> None:

FILE: src/openai/resources/evals/evals.py
  class Evals (line 37) | class Evals(SyncAPIResource):
    method runs (line 41) | def runs(self) -> Runs:
    method with_raw_response (line 46) | def with_raw_response(self) -> EvalsWithRawResponse:
    method with_streaming_response (line 56) | def with_streaming_response(self) -> EvalsWithStreamingResponse:
    method create (line 64) | def create(
    method retrieve (line 129) | def retrieve(
    method update (line 162) | def update(
    method list (line 213) | def list(
    method delete (line 270) | def delete(
  class AsyncEvals (line 304) | class AsyncEvals(AsyncAPIResource):
    method runs (line 308) | def runs(self) -> AsyncRuns:
    method with_raw_response (line 313) | def with_raw_response(self) -> AsyncEvalsWithRawResponse:
    method with_streaming_response (line 323) | def with_streaming_response(self) -> AsyncEvalsWithStreamingResponse:
    method create (line 331) | async def create(
    method retrieve (line 396) | async def retrieve(
    method update (line 429) | async def update(
    method list (line 480) | def list(
    method delete (line 537) | async def delete(
  class EvalsWithRawResponse (line 571) | class EvalsWithRawResponse:
    method __init__ (line 572) | def __init__(self, evals: Evals) -> None:
    method runs (line 592) | def runs(self) -> RunsWithRawResponse:
  class AsyncEvalsWithRawResponse (line 597) | class AsyncEvalsWithRawResponse:
    method __init__ (line 598) | def __init__(self, evals: AsyncEvals) -> None:
    method runs (line 618) | def runs(self) -> AsyncRunsWithRawResponse:
  class EvalsWithStreamingResponse (line 623) | class EvalsWithStreamingResponse:
    method __init__ (line 624) | def __init__(self, evals: Evals) -> None:
    method runs (line 644) | def runs(self) -> RunsWithStreamingResponse:
  class AsyncEvalsWithStreamingResponse (line 649) | class AsyncEvalsWithStreamingResponse:
    method __init__ (line 650) | def __init__(self, evals: AsyncEvals) -> None:
    method runs (line 670) | def runs(self) -> AsyncRunsWithStreamingResponse:

FILE: src/openai/resources/evals/runs/output_items.py
  class OutputItems (line 24) | class OutputItems(SyncAPIResource):
    method with_raw_response (line 28) | def with_raw_response(self) -> OutputItemsWithRawResponse:
    method with_streaming_response (line 38) | def with_streaming_response(self) -> OutputItemsWithStreamingResponse:
    method retrieve (line 46) | def retrieve(
    method list (line 85) | def list(
  class AsyncOutputItems (line 149) | class AsyncOutputItems(AsyncAPIResource):
    method with_raw_response (line 153) | def with_raw_response(self) -> AsyncOutputItemsWithRawResponse:
    method with_streaming_response (line 163) | def with_streaming_response(self) -> AsyncOutputItemsWithStreamingResp...
    method retrieve (line 171) | async def retrieve(
    method list (line 210) | def list(
  class OutputItemsWithRawResponse (line 274) | class OutputItemsWithRawResponse:
    method __init__ (line 275) | def __init__(self, output_items: OutputItems) -> None:
  class AsyncOutputItemsWithRawResponse (line 286) | class AsyncOutputItemsWithRawResponse:
    method __init__ (line 287) | def __init__(self, output_items: AsyncOutputItems) -> None:
  class OutputItemsWithStreamingResponse (line 298) | class OutputItemsWithStreamingResponse:
    method __init__ (line 299) | def __init__(self, output_items: OutputItems) -> None:
  class AsyncOutputItemsWithStreamingResponse (line 310) | class AsyncOutputItemsWithStreamingResponse:
    method __init__ (line 311) | def __init__(self, output_items: AsyncOutputItems) -> None:

FILE: src/openai/resources/evals/runs/runs.py
  class Runs (line 37) | class Runs(SyncAPIResource):
    method output_items (line 41) | def output_items(self) -> OutputItems:
    method with_raw_response (line 46) | def with_raw_response(self) -> RunsWithRawResponse:
    method with_streaming_response (line 56) | def with_streaming_response(self) -> RunsWithStreamingResponse:
    method create (line 64) | def create(
    method retrieve (line 121) | def retrieve(
    method list (line 157) | def list(
    method delete (line 217) | def delete(
    method cancel (line 253) | def cancel(
  class AsyncRuns (line 290) | class AsyncRuns(AsyncAPIResource):
    method output_items (line 294) | def output_items(self) -> AsyncOutputItems:
    method with_raw_response (line 299) | def with_raw_response(self) -> AsyncRunsWithRawResponse:
    method with_streaming_response (line 309) | def with_streaming_response(self) -> AsyncRunsWithStreamingResponse:
    method create (line 317) | async def create(
    method retrieve (line 374) | async def retrieve(
    method list (line 410) | def list(
    method delete (line 470) | async def delete(
    method cancel (line 506) | async def cancel(
  class RunsWithRawResponse (line 543) | class RunsWithRawResponse:
    method __init__ (line 544) | def __init__(self, runs: Runs) -> None:
    method output_items (line 564) | def output_items(self) -> OutputItemsWithRawResponse:
  class AsyncRunsWithRawResponse (line 569) | class AsyncRunsWithRawResponse:
    method __init__ (line 570) | def __init__(self, runs: AsyncRuns) -> None:
    method output_items (line 590) | def output_items(self) -> AsyncOutputItemsWithRawResponse:
  class RunsWithStreamingResponse (line 595) | class RunsWithStreamingResponse:
    method __init__ (line 596) | def __init__(self, runs: Runs) -> None:
    method output_items (line 616) | def output_items(self) -> OutputItemsWithStreamingResponse:
  class AsyncRunsWithStreamingResponse (line 621) | class AsyncRunsWithStreamingResponse:
    method __init__ (line 622) | def __init__(self, runs: AsyncRuns) -> None:
    method output_items (line 642) | def output_items(self) -> AsyncOutputItemsWithStreamingResponse:

FILE: src/openai/resources/files.py
  class Files (line 35) | class Files(SyncAPIResource):
    method with_raw_response (line 41) | def with_raw_response(self) -> FilesWithRawResponse:
    method with_streaming_response (line 51) | def with_streaming_response(self) -> FilesWithStreamingResponse:
    method create (line 59) | def create(
    method retrieve (line 141) | def retrieve(
    method list (line 174) | def list(
    method delete (line 235) | def delete(
    method content (line 268) | def content(
    method retrieve_content (line 303) | def retrieve_content(
    method wait_for_processing (line 336) | def wait_for_processing(
  class AsyncFiles (line 360) | class AsyncFiles(AsyncAPIResource):
    method with_raw_response (line 366) | def with_raw_response(self) -> AsyncFilesWithRawResponse:
    method with_streaming_response (line 376) | def with_streaming_response(self) -> AsyncFilesWithStreamingResponse:
    method create (line 384) | async def create(
    method retrieve (line 466) | async def retrieve(
    method list (line 499) | def list(
    method delete (line 560) | async def delete(
    method content (line 593) | async def content(
    method retrieve_content (line 628) | async def retrieve_content(
    method wait_for_processing (line 661) | async def wait_for_processing(
  class FilesWithRawResponse (line 685) | class FilesWithRawResponse:
    method __init__ (line 686) | def __init__(self, files: Files) -> None:
  class AsyncFilesWithRawResponse (line 711) | class AsyncFilesWithRawResponse:
    method __init__ (line 712) | def __init__(self, files: AsyncFiles) -> None:
  class FilesWithStreamingResponse (line 737) | class FilesWithStreamingResponse:
    method __init__ (line 738) | def __init__(self, files: Files) -> None:
  class AsyncFilesWithStreamingResponse (line 764) | class AsyncFilesWithStreamingResponse:
    method __init__ (line 765) | def __init__(self, files: AsyncFiles) -> None:

FILE: src/openai/resources/fine_tuning/alpha/alpha.py
  class Alpha (line 19) | class Alpha(SyncAPIResource):
    method graders (line 21) | def graders(self) -> Graders:
    method with_raw_response (line 26) | def with_raw_response(self) -> AlphaWithRawResponse:
    method with_streaming_response (line 36) | def with_streaming_response(self) -> AlphaWithStreamingResponse:
  class AsyncAlpha (line 45) | class AsyncAlpha(AsyncAPIResource):
    method graders (line 47) | def graders(self) -> AsyncGraders:
    method with_raw_response (line 52) | def with_raw_response(self) -> AsyncAlphaWithRawResponse:
    method with_streaming_response (line 62) | def with_streaming_response(self) -> AsyncAlphaWithStreamingResponse:
  class AlphaWithRawResponse (line 71) | class AlphaWithRawResponse:
    method __init__ (line 72) | def __init__(self, alpha: Alpha) -> None:
    method graders (line 76) | def graders(self) -> GradersWithRawResponse:
  class AsyncAlphaWithRawResponse (line 81) | class AsyncAlphaWithRawResponse:
    method __init__ (line 82) | def __init__(self, alpha: AsyncAlpha) -> None:
    method graders (line 86) | def graders(self) -> AsyncGradersWithRawResponse:
  class AlphaWithStreamingResponse (line 91) | class AlphaWithStreamingResponse:
    method __init__ (line 92) | def __init__(self, alpha: Alpha) -> None:
    method graders (line 96) | def graders(self) -> GradersWithStreamingResponse:
  class AsyncAlphaWithStreamingResponse (line 101) | class AsyncAlphaWithStreamingResponse:
    method __init__ (line 102) | def __init__(self, alpha: AsyncAlpha) -> None:
    method graders (line 106) | def graders(self) -> AsyncGradersWithStreamingResponse:

FILE: src/openai/resources/fine_tuning/alpha/graders.py
  class Graders (line 21) | class Graders(SyncAPIResource):
    method with_raw_response (line 25) | def with_raw_response(self) -> GradersWithRawResponse:
    method with_streaming_response (line 35) | def with_streaming_response(self) -> GradersWithStreamingResponse:
    method run (line 43) | def run(
    method validate (line 96) | def validate(
  class AsyncGraders (line 131) | class AsyncGraders(AsyncAPIResource):
    method with_raw_response (line 135) | def with_raw_response(self) -> AsyncGradersWithRawResponse:
    method with_streaming_response (line 145) | def with_streaming_response(self) -> AsyncGradersWithStreamingResponse:
    method run (line 153) | async def run(
    method validate (line 206) | async def validate(
  class GradersWithRawResponse (line 241) | class GradersWithRawResponse:
    method __init__ (line 242) | def __init__(self, graders: Graders) -> None:
  class AsyncGradersWithRawResponse (line 253) | class AsyncGradersWithRawResponse:
    method __init__ (line 254) | def __init__(self, graders: AsyncGraders) -> None:
  class GradersWithStreamingResponse (line 265) | class GradersWithStreamingResponse:
    method __init__ (line 266) | def __init__(self, graders: Graders) -> None:
  class AsyncGradersWithStreamingResponse (line 277) | class AsyncGradersWithStreamingResponse:
    method __init__ (line 278) | def __init__(self, graders: AsyncGraders) -> None:

FILE: src/openai/resources/fine_tuning/checkpoints/checkpoints.py
  class Checkpoints (line 19) | class Checkpoints(SyncAPIResource):
    method permissions (line 21) | def permissions(self) -> Permissions:
    method with_raw_response (line 26) | def with_raw_response(self) -> CheckpointsWithRawResponse:
    method with_streaming_response (line 36) | def with_streaming_response(self) -> CheckpointsWithStreamingResponse:
  class AsyncCheckpoints (line 45) | class AsyncCheckpoints(AsyncAPIResource):
    method permissions (line 47) | def permissions(self) -> AsyncPermissions:
    method with_raw_response (line 52) | def with_raw_response(self) -> AsyncCheckpointsWithRawResponse:
    method with_streaming_response (line 62) | def with_streaming_response(self) -> AsyncCheckpointsWithStreamingResp...
  class CheckpointsWithRawResponse (line 71) | class CheckpointsWithRawResponse:
    method __init__ (line 72) | def __init__(self, checkpoints: Checkpoints) -> None:
    method permissions (line 76) | def permissions(self) -> PermissionsWithRawResponse:
  class AsyncCheckpointsWithRawResponse (line 81) | class AsyncCheckpointsWithRawResponse:
    method __init__ (line 82) | def __init__(self, checkpoints: AsyncCheckpoints) -> None:
    method permissions (line 86) | def permissions(self) -> AsyncPermissionsWithRawResponse:
  class CheckpointsWithStreamingResponse (line 91) | class CheckpointsWithStreamingResponse:
    method __init__ (line 92) | def __init__(self, checkpoints: Checkpoints) -> None:
    method permissions (line 96) | def permissions(self) -> PermissionsWithStreamingResponse:
  class AsyncCheckpointsWithStreamingResponse (line 101) | class AsyncCheckpointsWithStreamingResponse:
    method __init__ (line 102) | def __init__(self, checkpoints: AsyncCheckpoints) -> None:
    method permissions (line 106) | def permissions(self) -> AsyncPermissionsWithStreamingResponse:

FILE: src/openai/resources/fine_tuning/checkpoints/permissions.py
  class Permissions (line 31) | class Permissions(SyncAPIResource):
    method with_raw_response (line 35) | def with_raw_response(self) -> PermissionsWithRawResponse:
    method with_streaming_response (line 45) | def with_streaming_response(self) -> PermissionsWithStreamingResponse:
    method create (line 53) | def create(
    method retrieve (line 98) | def retrieve(
    method list (line 160) | def list(
    method delete (line 223) | def delete(
  class AsyncPermissions (line 265) | class AsyncPermissions(AsyncAPIResource):
    method with_raw_response (line 269) | def with_raw_response(self) -> AsyncPermissionsWithRawResponse:
    method with_streaming_response (line 279) | def with_streaming_response(self) -> AsyncPermissionsWithStreamingResp...
    method create (line 287) | def create(
    method retrieve (line 332) | async def retrieve(
    method list (line 394) | def list(
    method delete (line 457) | async def delete(
  class PermissionsWithRawResponse (line 499) | class PermissionsWithRawResponse:
    method __init__ (line 500) | def __init__(self, permissions: Permissions) -> None:
  class AsyncPermissionsWithRawResponse (line 519) | class AsyncPermissionsWithRawResponse:
    method __init__ (line 520) | def __init__(self, permissions: AsyncPermissions) -> None:
  class PermissionsWithStreamingResponse (line 539) | class PermissionsWithStreamingResponse:
    method __init__ (line 540) | def __init__(self, permissions: Permissions) -> None:
  class AsyncPermissionsWithStreamingResponse (line 559) | class AsyncPermissionsWithStreamingResponse:
    method __init__ (line 560) | def __init__(self, permissions: AsyncPermissions) -> None:

FILE: src/openai/resources/fine_tuning/fine_tuning.py
  class FineTuning (line 35) | class FineTuning(SyncAPIResource):
    method jobs (line 37) | def jobs(self) -> Jobs:
    method checkpoints (line 42) | def checkpoints(self) -> Checkpoints:
    method alpha (line 46) | def alpha(self) -> Alpha:
    method with_raw_response (line 50) | def with_raw_response(self) -> FineTuningWithRawResponse:
    method with_streaming_response (line 60) | def with_streaming_response(self) -> FineTuningWithStreamingResponse:
  class AsyncFineTuning (line 69) | class AsyncFineTuning(AsyncAPIResource):
    method jobs (line 71) | def jobs(self) -> AsyncJobs:
    method checkpoints (line 76) | def checkpoints(self) -> AsyncCheckpoints:
    method alpha (line 80) | def alpha(self) -> AsyncAlpha:
    method with_raw_response (line 84) | def with_raw_response(self) -> AsyncFineTuningWithRawResponse:
    method with_streaming_response (line 94) | def with_streaming_response(self) -> AsyncFineTuningWithStreamingRespo...
  class FineTuningWithRawResponse (line 103) | class FineTuningWithRawResponse:
    method __init__ (line 104) | def __init__(self, fine_tuning: FineTuning) -> None:
    method jobs (line 108) | def jobs(self) -> JobsWithRawResponse:
    method checkpoints (line 113) | def checkpoints(self) -> CheckpointsWithRawResponse:
    method alpha (line 117) | def alpha(self) -> AlphaWithRawResponse:
  class AsyncFineTuningWithRawResponse (line 121) | class AsyncFineTuningWithRawResponse:
    method __init__ (line 122) | def __init__(self, fine_tuning: AsyncFineTuning) -> None:
    method jobs (line 126) | def jobs(self) -> AsyncJobsWithRawResponse:
    method checkpoints (line 131) | def checkpoints(self) -> AsyncCheckpointsWithRawResponse:
    method alpha (line 135) | def alpha(self) -> AsyncAlphaWithRawResponse:
  class FineTuningWithStreamingResponse (line 139) | class FineTuningWithStreamingResponse:
    method __init__ (line 140) | def __init__(self, fine_tuning: FineTuning) -> None:
    method jobs (line 144) | def jobs(self) -> JobsWithStreamingResponse:
    method checkpoints (line 149) | def checkpoints(self) -> CheckpointsWithStreamingResponse:
    method alpha (line 153) | def alpha(self) -> AlphaWithStreamingResponse:
  class AsyncFineTuningWithStreamingResponse (line 157) | class AsyncFineTuningWithStreamingResponse:
    method __init__ (line 158) | def __init__(self, fine_tuning: AsyncFineTuning) -> None:
    method jobs (line 162) | def jobs(self) -> AsyncJobsWithStreamingResponse:
    method checkpoints (line 167) | def checkpoints(self) -> AsyncCheckpointsWithStreamingResponse:
    method alpha (line 171) | def alpha(self) -> AsyncAlphaWithStreamingResponse:

FILE: src/openai/resources/fine_tuning/jobs/checkpoints.py
  class Checkpoints (line 24) | class Checkpoints(SyncAPIResource):
    method with_raw_response (line 28) | def with_raw_response(self) -> CheckpointsWithRawResponse:
    method with_streaming_response (line 38) | def with_streaming_response(self) -> CheckpointsWithStreamingResponse:
    method list (line 46) | def list(
  class AsyncCheckpoints (line 97) | class AsyncCheckpoints(AsyncAPIResource):
    method with_raw_response (line 101) | def with_raw_response(self) -> AsyncCheckpointsWithRawResponse:
    method with_streaming_response (line 111) | def with_streaming_response(self) -> AsyncCheckpointsWithStreamingResp...
    method list (line 119) | def list(
  class CheckpointsWithRawResponse (line 170) | class CheckpointsWithRawResponse:
    method __init__ (line 171) | def __init__(self, checkpoints: Checkpoints) -> None:
  class AsyncCheckpointsWithRawResponse (line 179) | class AsyncCheckpointsWithRawResponse:
    method __init__ (line 180) | def __init__(self, checkpoints: AsyncCheckpoints) -> None:
  class CheckpointsWithStreamingResponse (line 188) | class CheckpointsWithStreamingResponse:
    method __init__ (line 189) | def __init__(self, checkpoints: Checkpoints) -> None:
  class AsyncCheckpointsWithStreamingResponse (line 197) | class AsyncCheckpointsWithStreamingResponse:
    method __init__ (line 198) | def __init__(self, checkpoints: AsyncCheckpoints) -> None:

FILE: src/openai/resources/fine_tuning/jobs/jobs.py
  class Jobs (line 37) | class Jobs(SyncAPIResource):
    method checkpoints (line 41) | def checkpoints(self) -> Checkpoints:
    method with_raw_response (line 46) | def with_raw_response(self) -> JobsWithRawResponse:
    method with_streaming_response (line 56) | def with_streaming_response(self) -> JobsWithStreamingResponse:
    method create (line 64) | def create(
    method retrieve (line 183) | def retrieve(
    method list (line 218) | def list(
    method cancel (line 270) | def cancel(
    method list_events (line 303) | def list_events(
    method pause (line 353) | def pause(
    method resume (line 386) | def resume(
  class AsyncJobs (line 420) | class AsyncJobs(AsyncAPIResource):
    method checkpoints (line 424) | def checkpoints(self) -> AsyncCheckpoints:
    method with_raw_response (line 429) | def with_raw_response(self) -> AsyncJobsWithRawResponse:
    method with_streaming_response (line 439) | def with_streaming_response(self) -> AsyncJobsWithStreamingResponse:
    method create (line 447) | async def create(
    method retrieve (line 566) | async def retrieve(
    method list (line 601) | def list(
    method cancel (line 653) | async def cancel(
    method list_events (line 686) | def list_events(
    method pause (line 736) | async def pause(
    method resume (line 769) | async def resume(
  class JobsWithRawResponse (line 803) | class JobsWithRawResponse:
    method __init__ (line 804) | def __init__(self, jobs: Jobs) -> None:
    method checkpoints (line 830) | def checkpoints(self) -> CheckpointsWithRawResponse:
  class AsyncJobsWithRawResponse (line 835) | class AsyncJobsWithRawResponse:
    method __init__ (line 836) | def __init__(self, jobs: AsyncJobs) -> None:
    method checkpoints (line 862) | def checkpoints(self) -> AsyncCheckpointsWithRawResponse:
  class JobsWithStreamingResponse (line 867) | class JobsWithStreamingResponse:
    method __init__ (line 868) | def __init__(self, jobs: Jobs) -> None:
    method checkpoints (line 894) | def checkpoints(self) -> CheckpointsWithStreamingResponse:
  class AsyncJobsWithStreamingResponse (line 899) | class AsyncJobsWithStreamingResponse:
    method __init__ (line 900) | def __init__(self, jobs: AsyncJobs) -> None:
    method checkpoints (line 926) | def checkpoints(self) -> AsyncCheckpointsWithStreamingResponse:

FILE: src/openai/resources/images.py
  class Images (line 27) | class Images(SyncAPIResource):
    method with_raw_response (line 31) | def with_raw_response(self) -> ImagesWithRawResponse:
    method with_streaming_response (line 41) | def with_streaming_response(self) -> ImagesWithStreamingResponse:
    method create_variation (line 49) | def create_variation(
    method edit (line 123) | def edit(
    method edit (line 236) | def edit(
    method edit (line 349) | def edit(
    method edit (line 462) | def edit(
    method generate (line 527) | def generate(
    method generate (line 638) | def generate(
    method generate (line 749) | def generate(
    method generate (line 860) | def generate(
  class AsyncImages (line 919) | class AsyncImages(AsyncAPIResource):
    method with_raw_response (line 923) | def with_raw_response(self) -> AsyncImagesWithRawResponse:
    method with_streaming_response (line 933) | def with_streaming_response(self) -> AsyncImagesWithStreamingResponse:
    method create_variation (line 941) | async def create_variation(
    method edit (line 1015) | async def edit(
    method edit (line 1128) | async def edit(
    method edit (line 1241) | async def edit(
    method edit (line 1354) | async def edit(
    method generate (line 1419) | async def generate(
    method generate (line 1530) | async def generate(
    method generate (line 1641) | async def generate(
    method generate (line 1752) | async def generate(
  class ImagesWithRawResponse (line 1811) | class ImagesWithRawResponse:
    method __init__ (line 1812) | def __init__(self, images: Images) -> None:
  class AsyncImagesWithRawResponse (line 1826) | class AsyncImagesWithRawResponse:
    method __init__ (line 1827) | def __init__(self, images: AsyncImages) -> None:
  class ImagesWithStreamingResponse (line 1841) | class ImagesWithStreamingResponse:
    method __init__ (line 1842) | def __init__(self, images: Images) -> None:
  class AsyncImagesWithStreamingResponse (line 1856) | class AsyncImagesWithStreamingResponse:
    method __init__ (line 1857) | def __init__(self, images: AsyncImages) -> None:

FILE: src/openai/resources/models.py
  class Models (line 23) | class Models(SyncAPIResource):
    method with_raw_response (line 27) | def with_raw_response(self) -> ModelsWithRawResponse:
    method with_streaming_response (line 37) | def with_streaming_response(self) -> ModelsWithStreamingResponse:
    method retrieve (line 45) | def retrieve(
    method list (line 79) | def list(
    method delete (line 102) | def delete(
  class AsyncModels (line 138) | class AsyncModels(AsyncAPIResource):
    method with_raw_response (line 142) | def with_raw_response(self) -> AsyncModelsWithRawResponse:
    method with_streaming_response (line 152) | def with_streaming_response(self) -> AsyncModelsWithStreamingResponse:
    method retrieve (line 160) | async def retrieve(
    method list (line 194) | def list(
    method delete (line 217) | async def delete(
  class ModelsWithRawResponse (line 253) | class ModelsWithRawResponse:
    method __init__ (line 254) | def __init__(self, models: Models) -> None:
  class AsyncModelsWithRawResponse (line 268) | class AsyncModelsWithRawResponse:
    method __init__ (line 269) | def __init__(self, models: AsyncModels) -> None:
  class ModelsWithStreamingResponse (line 283) | class ModelsWithStreamingResponse:
    method __init__ (line 284) | def __init__(self, models: Models) -> None:
  class AsyncModelsWithStreamingResponse (line 298) | class AsyncModelsWithStreamingResponse:
    method __init__ (line 299) | def __init__(self, models: AsyncModels) -> None:

FILE: src/openai/resources/moderations.py
  class Moderations (line 24) | class Moderations(SyncAPIResource):
    method with_raw_response (line 30) | def with_raw_response(self) -> ModerationsWithRawResponse:
    method with_streaming_response (line 40) | def with_streaming_response(self) -> ModerationsWithStreamingResponse:
    method create (line 48) | def create(
  class AsyncModerations (line 98) | class AsyncModerations(AsyncAPIResource):
    method with_raw_response (line 104) | def with_raw_response(self) -> AsyncModerationsWithRawResponse:
    method with_streaming_response (line 114) | def with_streaming_response(self) -> AsyncModerationsWithStreamingResp...
    method create (line 122) | async def create(
  class ModerationsWithRawResponse (line 172) | class ModerationsWithRawResponse:
    method __init__ (line 173) | def __init__(self, moderations: Moderations) -> None:
  class AsyncModerationsWithRawResponse (line 181) | class AsyncModerationsWithRawResponse:
    method __init__ (line 182) | def __init__(self, moderations: AsyncModerations) -> None:
  class ModerationsWithStreamingResponse (line 190) | class ModerationsWithStreamingResponse:
    method __init__ (line 191) | def __init__(self, moderations: Moderations) -> None:
  class AsyncModerationsWithStreamingResponse (line 199) | class AsyncModerationsWithStreamingResponse:
    method __init__ (line 200) | def __init__(self, moderations: AsyncModerations) -> None:

FILE: src/openai/resources/realtime/calls.py
  class Calls (line 41) | class Calls(SyncAPIResource):
    method with_raw_response (line 43) | def with_raw_response(self) -> CallsWithRawResponse:
    method with_streaming_response (line 53) | def with_streaming_response(self) -> CallsWithStreamingResponse:
    method create (line 61) | def create(
    method accept (line 106) | def accept(
    method hangup (line 257) | def hangup(
    method refer (line 291) | def refer(
    method reject (line 330) | def reject(
  class AsyncCalls (line 370) | class AsyncCalls(AsyncAPIResource):
    method with_raw_response (line 372) | def with_raw_response(self) -> AsyncCallsWithRawResponse:
    method with_streaming_response (line 382) | def with_streaming_response(self) -> AsyncCallsWithStreamingResponse:
    method create (line 390) | async def create(
    method accept (line 435) | async def accept(
    method hangup (line 586) | async def hangup(
    method refer (line 620) | async def refer(
    method reject (line 659) | async def reject(
  class CallsWithRawResponse (line 699) | class CallsWithRawResponse:
    method __init__ (line 700) | def __init__(self, calls: Calls) -> None:
  class AsyncCallsWithRawResponse (line 720) | class AsyncCallsWithRawResponse:
    method __init__ (line 721) | def __init__(self, calls: AsyncCalls) -> None:
  class CallsWithStreamingResponse (line 741) | class CallsWithStreamingResponse:
    method __init__ (line 742) | def __init__(self, calls: Calls) -> None:
  class AsyncCallsWithStreamingResponse (line 763) | class AsyncCallsWithStreamingResponse:
    method __init__ (line 764) | def __init__(self, calls: AsyncCalls) -> None:

FILE: src/openai/resources/realtime/client_secrets.py
  class ClientSecrets (line 20) | class ClientSecrets(SyncAPIResource):
    method with_raw_response (line 22) | def with_raw_response(self) -> ClientSecretsWithRawResponse:
    method with_streaming_response (line 32) | def with_streaming_response(self) -> ClientSecretsWithStreamingResponse:
    method create (line 40) | def create(
  class AsyncClientSecrets (line 102) | class AsyncClientSecrets(AsyncAPIResource):
    method with_raw_response (line 104) | def with_raw_response(self) -> AsyncClientSecretsWithRawResponse:
    method with_streaming_response (line 114) | def with_streaming_response(self) -> AsyncClientSecretsWithStreamingRe...
    method create (line 122) | async def create(
  class ClientSecretsWithRawResponse (line 184) | class ClientSecretsWithRawResponse:
    method __init__ (line 185) | def __init__(self, client_secrets: ClientSecrets) -> None:
  class AsyncClientSecretsWithRawResponse (line 193) | class AsyncClientSecretsWithRawResponse:
    method __init__ (line 194) | def __init__(self, client_secrets: AsyncClientSecrets) -> None:
  class ClientSecretsWithStreamingResponse (line 202) | class ClientSecretsWithStreamingResponse:
    method __init__ (line 203) | def __init__(self, client_secrets: ClientSecrets) -> None:
  class AsyncClientSecretsWithStreamingResponse (line 211) | class AsyncClientSecretsWithStreamingResponse:
    method __init__ (line 212) | def __init__(self, client_secrets: AsyncClientSecrets) -> None:

FILE: src/openai/resources/realtime/realtime.py
  class Realtime (line 62) | class Realtime(SyncAPIResource):
    method client_secrets (line 64) | def client_secrets(self) -> ClientSecrets:
    method calls (line 68) | def calls(self) -> Calls:
    method with_raw_response (line 74) | def with_raw_response(self) -> RealtimeWithRawResponse:
    method with_streaming_response (line 84) | def with_streaming_response(self) -> RealtimeWithStreamingResponse:
    method connect (line 92) | def connect(
  class AsyncRealtime (line 122) | class AsyncRealtime(AsyncAPIResource):
    method client_secrets (line 124) | def client_secrets(self) -> AsyncClientSecrets:
    method calls (line 128) | def calls(self) -> AsyncCalls:
    method with_raw_response (line 134) | def with_raw_response(self) -> AsyncRealtimeWithRawResponse:
    method with_streaming_response (line 144) | def with_streaming_response(self) -> AsyncRealtimeWithStreamingResponse:
    method connect (line 152) | def connect(
  class RealtimeWithRawResponse (line 182) | class RealtimeWithRawResponse:
    method __init__ (line 183) | def __init__(self, realtime: Realtime) -> None:
    method client_secrets (line 187) | def client_secrets(self) -> ClientSecretsWithRawResponse:
    method calls (line 191) | def calls(self) -> CallsWithRawResponse:
  class AsyncRealtimeWithRawResponse (line 195) | class AsyncRealtimeWithRawResponse:
    method __init__ (line 196) | def __init__(self, realtime: AsyncRealtime) -> None:
    method client_secrets (line 200) | def client_secrets(self) -> AsyncClientSecretsWithRawResponse:
    method calls (line 204) | def calls(self) -> AsyncCallsWithRawResponse:
  class RealtimeWithStreamingResponse (line 208) | class RealtimeWithStreamingResponse:
    method __init__ (line 209) | def __init__(self, realtime: Realtime) -> None:
    method client_secrets (line 213) | def client_secrets(self) -> ClientSecretsWithStreamingResponse:
    method calls (line 217) | def calls(self) -> CallsWithStreamingResponse:
  class AsyncRealtimeWithStreamingResponse (line 221) | class AsyncRealtimeWithStreamingResponse:
    method __init__ (line 222) | def __init__(self, realtime: AsyncRealtime) -> None:
    method client_secrets (line 226) | def client_secrets(self) -> AsyncClientSecretsWithStreamingResponse:
    method calls (line 230) | def calls(self) -> AsyncCallsWithStreamingResponse:
  class AsyncRealtimeConnection (line 234) | class AsyncRealtimeConnection:
    method __init__ (line 245) | def __init__(self, connection: AsyncWebSocketConnection) -> None:
    method __aiter__ (line 254) | async def __aiter__(self) -> AsyncIterator[RealtimeServerEvent]:
    method recv (line 267) | async def recv(self) -> RealtimeServerEvent:
    method recv_bytes (line 275) | async def recv_bytes(self) -> bytes:
    method send (line 287) | async def send(self, event: RealtimeClientEvent | RealtimeClientEventP...
    method close (line 295) | async def close(self, *, code: int = 1000, reason: str = "") -> None:
    method parse_event (line 298) | def parse_event(self, data: str | bytes) -> RealtimeServerEvent:
  class AsyncRealtimeConnectionManager (line 309) | class AsyncRealtimeConnectionManager:
    method __init__ (line 329) | def __init__(
    method __aenter__ (line 347) | async def __aenter__(self) -> AsyncRealtimeConnection:
    method _prepare_url (line 407) | def _prepare_url(self) -> httpx.URL:
    method __aexit__ (line 418) | async def __aexit__(
  class RealtimeConnection (line 425) | class RealtimeConnection:
    method __init__ (line 436) | def __init__(self, connection: WebSocketConnection) -> None:
    method __iter__ (line 445) | def __iter__(self) -> Iterator[RealtimeServerEvent]:
    method recv (line 458) | def recv(self) -> RealtimeServerEvent:
    method recv_bytes (line 466) | def recv_bytes(self) -> bytes:
    method send (line 478) | def send(self, event: RealtimeClientEvent | RealtimeClientEventParam) ...
    method close (line 486) | def close(self, *, code: int = 1000, reason: str = "") -> None:
    method parse_event (line 489) | def parse_event(self, data: str | bytes) -> RealtimeServerEvent:
  class RealtimeConnectionManager (line 500) | class RealtimeConnectionManager:
    method __init__ (line 520) | def __init__(
    method __enter__ (line 538) | def __enter__(self) -> RealtimeConnection:
    method _prepare_url (line 598) | def _prepare_url(self) -> httpx.URL:
    method __exit__ (line 609) | def __exit__(
  class BaseRea
Condensed preview — 1262 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,778K chars).
[
  {
    "path": ".devcontainer/Dockerfile",
    "chars": 332,
    "preview": "ARG VARIANT=\"3.9\"\nFROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}\n\nUSER vscode\n\nRUN curl -sSf https://ry"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 1244,
    "preview": "// For format details, see https://aka.ms/devcontainer.json. For config options, see the\n// README at: https://github.co"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 206,
    "preview": "# This file is used to automatically assign reviewers to PRs\n# For more information see: https://help.github.com/en/gith"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 1785,
    "preview": "name: Bug report\ndescription: Report an issue or bug with this library\nlabels: ['bug']\nbody:\n  - type: markdown\n    attr"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 345,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: OpenAI support\n    url: https://help.openai.com/\n    about: |\n     "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1028,
    "preview": "name: Feature request\ndescription: Suggest an idea for this library\nlabels: ['feature-request']\nbody:\n  - type: markdown"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 496,
    "preview": "<!-- Thank you for contributing to this project! -->\n<!-- The code in this repository is all auto-generated, and is not "
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 3879,
    "preview": "name: CI\non:\n  push:\n    branches:\n      - '**'\n      - '!integrated/**'\n      - '!stl-preview-head/**'\n      - '!stl-pr"
  },
  {
    "path": ".github/workflows/create-releases.yml",
    "chars": 1063,
    "preview": "name: Create releases\non:\n  schedule:\n    - cron: '0 5 * * *' # every day at 5am UTC\n  push:\n    branches:\n      - main\n"
  },
  {
    "path": ".github/workflows/detect-breaking-changes.yml",
    "chars": 2525,
    "preview": "name: CI\non:\n  pull_request:\n    branches:\n      - main\n      - next\n\njobs:\n  detect_breaking_changes:\n    runs-on: 'ubu"
  },
  {
    "path": ".github/workflows/publish-pypi.yml",
    "chars": 778,
    "preview": "# workflow for re-running publishing to PyPI in case it fails for some reason\n# you can run this workflow by navigating "
  },
  {
    "path": ".github/workflows/release-doctor.yml",
    "chars": 691,
    "preview": "name: Release Doctor\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\njobs:\n  release_doctor:\n    name: rele"
  },
  {
    "path": ".gitignore",
    "chars": 131,
    "preview": ".prism.log\n_dev\n\n__pycache__\n.mypy_cache\n\ndist\n\n.venv\n.idea\n\n.env\n.envrc\ncodegen.log\nBrewfile.lock.json\n\n.DS_Store\n\nexam"
  },
  {
    "path": ".inline-snapshot/external/.gitignore",
    "chars": 67,
    "preview": "# ignore all snapshots which are not refered in the source\n*-new.*\n"
  },
  {
    "path": ".python-version",
    "chars": 7,
    "preview": "3.9.18\n"
  },
  {
    "path": ".release-please-manifest.json",
    "chars": 19,
    "preview": "{\n  \".\": \"2.29.0\"\n}"
  },
  {
    "path": ".stats.yml",
    "chars": 286,
    "preview": "configured_endpoints: 152\nopenapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-5"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 52,
    "preview": "{\n    \"python.analysis.importFormat\": \"relative\",\n}\n"
  },
  {
    "path": "Brewfile",
    "chars": 12,
    "preview": "brew \"rye\"\n\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 195654,
    "preview": "# Changelog\n\n## 2.29.0 (2026-03-17)\n\nFull Changelog: [v2.28.0...v2.29.0](https://github.com/openai/openai-python/compare"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 3509,
    "preview": "## Setting up the environment\n\n### With Rye\n\nWe use [Rye](https://rye.astral.sh/) to manage dependencies because it will"
  },
  {
    "path": "LICENSE",
    "chars": 11336,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 27100,
    "preview": "# OpenAI Python API library\n\n<!-- prettier-ignore -->\n[![PyPI version](https://img.shields.io/pypi/v/openai.svg?label=py"
  },
  {
    "path": "SECURITY.md",
    "chars": 1331,
    "preview": "# Security Policy\n\n## Reporting Security Issues\n\nThis SDK is generated by [Stainless Software Inc](http://stainless.com)"
  },
  {
    "path": "api.md",
    "chars": 50366,
    "preview": "# Shared Types\n\n```python\nfrom openai.types import (\n    AllModels,\n    ChatModel,\n    ComparisonFilter,\n    CompoundFil"
  },
  {
    "path": "bin/check-release-environment",
    "chars": 651,
    "preview": "#!/usr/bin/env bash\n\nerrors=()\n\nif [ -z \"${STAINLESS_API_KEY}\" ]; then\n  errors+=(\"The STAINLESS_API_KEY secret has not "
  },
  {
    "path": "bin/publish-pypi",
    "chars": 100,
    "preview": "#!/usr/bin/env bash\n\nset -eux\nmkdir -p dist\nrye build --clean\nrye publish --yes --token=$PYPI_TOKEN\n"
  },
  {
    "path": "examples/.keep",
    "chars": 239,
    "preview": "File generated from our OpenAPI spec by Stainless.\n\nThis directory can be used to store example files demonstrating usag"
  },
  {
    "path": "examples/async_demo.py",
    "chars": 462,
    "preview": "#!/usr/bin/env -S poetry run python\n\nimport asyncio\n\nfrom openai import AsyncOpenAI\n\n# gets API Key from environment var"
  },
  {
    "path": "examples/audio.py",
    "chars": 933,
    "preview": "#!/usr/bin/env rye run python\n\nfrom pathlib import Path\n\nfrom openai import OpenAI\n\n# gets OPENAI_API_KEY from your envi"
  },
  {
    "path": "examples/azure.py",
    "chars": 1428,
    "preview": "from openai import AzureOpenAI\n\n# may change in the future\n# https://learn.microsoft.com/en-us/azure/ai-services/openai/"
  },
  {
    "path": "examples/azure_ad.py",
    "chars": 1949,
    "preview": "import asyncio\n\nfrom openai.lib.azure import AzureOpenAI, AsyncAzureOpenAI, AzureADTokenProvider, AsyncAzureADTokenProvi"
  },
  {
    "path": "examples/demo.py",
    "chars": 1198,
    "preview": "#!/usr/bin/env -S poetry run python\n\nfrom openai import OpenAI\n\n# gets API Key from environment variable OPENAI_API_KEY\n"
  },
  {
    "path": "examples/generate_file.sh",
    "chars": 356,
    "preview": "# generate a text file with random data for testing file uploads\nwanted_size=$((1024*2048*512))\nfile_size=$(( ((wanted_s"
  },
  {
    "path": "examples/image_stream.py",
    "chars": 1634,
    "preview": "#!/usr/bin/env python\n\nimport base64\nfrom pathlib import Path\n\nfrom openai import OpenAI\n\nclient = OpenAI()\n\n\ndef main()"
  },
  {
    "path": "examples/module_client.py",
    "chars": 659,
    "preview": "import openai\n\n# will default to `os.environ['OPENAI_API_KEY']` if not explicitly set\nopenai.api_key = \"...\"\n\n# all clie"
  },
  {
    "path": "examples/parsing.py",
    "chars": 700,
    "preview": "from typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import OpenAI\n\n\nclass Step(BaseModel):\n"
  },
  {
    "path": "examples/parsing_stream.py",
    "chars": 1036,
    "preview": "from typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import OpenAI\n\n\nclass Step(BaseModel):\n"
  },
  {
    "path": "examples/parsing_tools.py",
    "chars": 1740,
    "preview": "from enum import Enum\nfrom typing import List, Union\n\nimport rich\nfrom pydantic import BaseModel\n\nimport openai\nfrom ope"
  },
  {
    "path": "examples/parsing_tools_stream.py",
    "chars": 948,
    "preview": "from __future__ import annotations\n\nimport rich\nfrom pydantic import BaseModel\n\nimport openai\nfrom openai import OpenAI\n"
  },
  {
    "path": "examples/picture.py",
    "chars": 462,
    "preview": "#!/usr/bin/env python\n\nfrom openai import OpenAI\n\n# gets OPENAI_API_KEY from your environment variables\nopenai = OpenAI("
  },
  {
    "path": "examples/realtime/audio_util.py",
    "chars": 4266,
    "preview": "from __future__ import annotations\n\nimport io\nimport base64\nimport asyncio\nimport threading\nfrom typing import Callable,"
  },
  {
    "path": "examples/realtime/azure_realtime.py",
    "chars": 3237,
    "preview": "import os\nimport asyncio\n\nfrom azure.identity.aio import DefaultAzureCredential, get_bearer_token_provider\n\nfrom openai "
  },
  {
    "path": "examples/realtime/push_to_talk_app.py",
    "chars": 9480,
    "preview": "#!/usr/bin/env uv run\n####################################################################\n# Sample TUI app with a push "
  },
  {
    "path": "examples/realtime/realtime.py",
    "chars": 1902,
    "preview": "#!/usr/bin/env rye run python\nimport asyncio\n\nfrom openai import AsyncOpenAI\n\n# Azure OpenAI Realtime Docs\n\n# How-to: ht"
  },
  {
    "path": "examples/responses/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "examples/responses/background.py",
    "chars": 901,
    "preview": "from typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import OpenAI\n\n\nclass Step(BaseModel):\n"
  },
  {
    "path": "examples/responses/background_async.py",
    "chars": 1149,
    "preview": "import asyncio\nfrom typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai._client import AsyncOpen"
  },
  {
    "path": "examples/responses/background_streaming.py",
    "chars": 1002,
    "preview": "#!/usr/bin/env -S rye run python\nfrom typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import"
  },
  {
    "path": "examples/responses/background_streaming_async.py",
    "chars": 1201,
    "preview": "import asyncio\nfrom typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import AsyncOpenAI\n\n\ncla"
  },
  {
    "path": "examples/responses/streaming.py",
    "chars": 526,
    "preview": "from typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import OpenAI\n\n\nclass Step(BaseModel):\n"
  },
  {
    "path": "examples/responses/streaming_tools.py",
    "chars": 1264,
    "preview": "from enum import Enum\nfrom typing import List, Union\n\nimport rich\nfrom pydantic import BaseModel\n\nimport openai\nfrom ope"
  },
  {
    "path": "examples/responses/structured_outputs.py",
    "chars": 1050,
    "preview": "from typing import List\n\nimport rich\nfrom pydantic import BaseModel\n\nfrom openai import OpenAI\n\n\nclass Step(BaseModel):\n"
  },
  {
    "path": "examples/responses/structured_outputs_tools.py",
    "chars": 1431,
    "preview": "from enum import Enum\nfrom typing import List, Union\n\nimport rich\nfrom pydantic import BaseModel\n\nimport openai\nfrom ope"
  },
  {
    "path": "examples/responses/websocket.py",
    "chars": 13643,
    "preview": "from __future__ import annotations\n\nimport json\nimport argparse\nfrom typing import TYPE_CHECKING, Dict, Union, Literal, "
  },
  {
    "path": "examples/responses_input_tokens.py",
    "chars": 1662,
    "preview": "from typing import List\n\nfrom openai import OpenAI\nfrom openai.types.responses.tool_param import ToolParam\nfrom openai.t"
  },
  {
    "path": "examples/speech_to_text.py",
    "chars": 561,
    "preview": "#!/usr/bin/env rye run python\n\nimport asyncio\n\nfrom openai import AsyncOpenAI\nfrom openai.helpers import Microphone\n\n# g"
  },
  {
    "path": "examples/streaming.py",
    "chars": 1594,
    "preview": "#!/usr/bin/env -S poetry run python\n\nimport asyncio\n\nfrom openai import OpenAI, AsyncOpenAI\n\n# This script assumes you h"
  },
  {
    "path": "examples/text_to_speech.py",
    "chars": 952,
    "preview": "#!/usr/bin/env rye run python\n\nimport time\nimport asyncio\n\nfrom openai import AsyncOpenAI\nfrom openai.helpers import Loc"
  },
  {
    "path": "examples/uploads.py",
    "chars": 886,
    "preview": "import sys\nfrom pathlib import Path\n\nimport rich\n\nfrom openai import OpenAI\n\n# generate this file using `./generate_file"
  },
  {
    "path": "examples/video.py",
    "chars": 474,
    "preview": "#!/usr/bin/env -S poetry run python\n\nimport asyncio\n\nfrom openai import AsyncOpenAI\n\nclient = AsyncOpenAI()\n\n\nasync def "
  },
  {
    "path": "helpers.md",
    "chars": 17517,
    "preview": "# Structured Outputs Parsing Helpers\n\nThe OpenAI API supports extracting JSON from the model with the `response_format` "
  },
  {
    "path": "noxfile.py",
    "chars": 295,
    "preview": "import nox\n\n\n@nox.session(reuse_venv=True, name=\"test-pydantic-v1\")\ndef test_pydantic_v1(session: nox.Session) -> None:\n"
  },
  {
    "path": "pyproject.toml",
    "chars": 7415,
    "preview": "[project]\nname = \"openai\"\nversion = \"2.29.0\"\ndescription = \"The official Python library for the openai API\"\ndynamic = [\""
  },
  {
    "path": "release-please-config.json",
    "chars": 1322,
    "preview": "{\n  \"packages\": {\n    \".\": {}\n  },\n  \"$schema\": \"https://raw.githubusercontent.com/stainless-api/release-please/main/sch"
  },
  {
    "path": "scripts/bootstrap",
    "chars": 561,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\ncd \"$(dirname \"$0\")/..\"\n\nif [ -f \"Brewfile\" ] && [ \"$(uname -s)\" = \"Darwin\" ] && [ \"$SKIP_B"
  },
  {
    "path": "scripts/detect-breaking-changes",
    "chars": 593,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\ncd \"$(dirname \"$0\")/..\"\n\necho \"==> Detecting breaking changes\"\n\nTEST_PATHS=(\n\ttests/api_res"
  },
  {
    "path": "scripts/detect-breaking-changes.py",
    "chars": 2481,
    "preview": "from __future__ import annotations\n\nimport sys\nfrom typing import Iterator\nfrom pathlib import Path\n\nimport rich\nimport "
  },
  {
    "path": "scripts/format",
    "chars": 99,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\ncd \"$(dirname \"$0\")/..\"\n\necho \"==> Running formatters\"\nrye run format\n"
  },
  {
    "path": "scripts/lint",
    "chars": 258,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\ncd \"$(dirname \"$0\")/..\"\n\nif [ \"$1\" = \"--fix\" ]; then\n  echo \"==> Running lints with --fix\"\n"
  },
  {
    "path": "scripts/mock",
    "chars": 1221,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\ncd \"$(dirname \"$0\")/..\"\n\nif [[ -n \"$1\" && \"$1\" != '--'* ]]; then\n  URL=\"$1\"\n  shift\nelse\n  "
  },
  {
    "path": "scripts/pyrightconfig.breaking-changes.json",
    "chars": 66,
    "preview": "{\n  \"extends\": \"../pyproject.toml\",\n  \"reportDeprecated\": false\n}\n"
  },
  {
    "path": "scripts/run-pyright",
    "chars": 138,
    "preview": "#!/usr/bin/env bash\n\nset -euo pipefail\n\ncd \"$(dirname \"$0\")/..\"\n\nCONFIG=${PYRIGHT_PROJECT:-pyproject.toml}\nexec pyright "
  },
  {
    "path": "scripts/test",
    "chars": 1474,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\ncd \"$(dirname \"$0\")/..\"\n\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[0;33m'\nNC='\\033[0"
  },
  {
    "path": "scripts/utils/ruffen-docs.py",
    "chars": 5216,
    "preview": "# fork of https://github.com/asottile/blacken-docs adapted for ruff\nfrom __future__ import annotations\n\nimport re\nimport"
  },
  {
    "path": "scripts/utils/upload-artifact.sh",
    "chars": 796,
    "preview": "#!/usr/bin/env bash\nset -exuo pipefail\n\nFILENAME=$(basename dist/*.whl)\n\nRESPONSE=$(curl -X POST \"$URL?filename=$FILENAM"
  },
  {
    "path": "src/openai/__init__.py",
    "chars": 11218,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/__main__.py",
    "chars": 30,
    "preview": "from .cli import main\n\nmain()\n"
  },
  {
    "path": "src/openai/_base_client.py",
    "chars": 75019,
    "preview": "from __future__ import annotations\n\nimport sys\nimport json\nimport time\nimport uuid\nimport email\nimport asyncio\nimport in"
  },
  {
    "path": "src/openai/_client.py",
    "chars": 51842,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/_compat.py",
    "chars": 7213,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, Union, Generic, TypeVar, Callable, cast, over"
  },
  {
    "path": "src/openai/_constants.py",
    "chars": 467,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport httpx\n\nRAW_RESPONSE_HEADER"
  },
  {
    "path": "src/openai/_exceptions.py",
    "chars": 5008,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/_extras/__init__.py",
    "chars": 165,
    "preview": "from .numpy_proxy import numpy as numpy, has_numpy as has_numpy\nfrom .pandas_proxy import pandas as pandas\nfrom .soundde"
  },
  {
    "path": "src/openai/_extras/_common.py",
    "chars": 364,
    "preview": "from .._exceptions import OpenAIError\n\nINSTRUCTIONS = \"\"\"\n\nOpenAI error:\n\n    missing `{library}`\n\nThis feature requires"
  },
  {
    "path": "src/openai/_extras/numpy_proxy.py",
    "chars": 805,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\nfrom typing_extensions import override\n\nfrom ."
  },
  {
    "path": "src/openai/_extras/pandas_proxy.py",
    "chars": 637,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\nfrom typing_extensions import override\n\nfrom ."
  },
  {
    "path": "src/openai/_extras/sounddevice_proxy.py",
    "chars": 725,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\nfrom typing_extensions import override\n\nfrom ."
  },
  {
    "path": "src/openai/_files.py",
    "chars": 3612,
    "preview": "from __future__ import annotations\n\nimport io\nimport os\nimport pathlib\nfrom typing import overload\nfrom typing_extension"
  },
  {
    "path": "src/openai/_legacy_response.py",
    "chars": 16374,
    "preview": "from __future__ import annotations\n\nimport os\nimport inspect\nimport logging\nimport datetime\nimport functools\nfrom typing"
  },
  {
    "path": "src/openai/_models.py",
    "chars": 33945,
    "preview": "from __future__ import annotations\n\nimport os\nimport inspect\nimport weakref\nfrom typing import (\n    IO,\n    TYPE_CHECKI"
  },
  {
    "path": "src/openai/_module_client.py",
    "chars": 5265,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/_qs.py",
    "chars": 4828,
    "preview": "from __future__ import annotations\n\nfrom typing import Any, List, Tuple, Union, Mapping, TypeVar\nfrom urllib.parse impor"
  },
  {
    "path": "src/openai/_resource.py",
    "chars": 1100,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/_response.py",
    "chars": 29647,
    "preview": "from __future__ import annotations\n\nimport os\nimport inspect\nimport logging\nimport datetime\nimport functools\nfrom types "
  },
  {
    "path": "src/openai/_streaming.py",
    "chars": 14608,
    "preview": "# Note: initially copied from https://github.com/florimondmanca/httpx-sse/blob/master/src/httpx_sse/_decoders.py\nfrom __"
  },
  {
    "path": "src/openai/_types.py",
    "chars": 7758,
    "preview": "from __future__ import annotations\n\nfrom os import PathLike\nfrom typing import (\n    IO,\n    TYPE_CHECKING,\n    Any,\n   "
  },
  {
    "path": "src/openai/_utils/__init__.py",
    "chars": 2465,
    "preview": "from ._logs import SensitiveHeadersFilter as SensitiveHeadersFilter\nfrom ._sync import asyncify as asyncify\nfrom ._proxy"
  },
  {
    "path": "src/openai/_utils/_compat.py",
    "chars": 1231,
    "preview": "from __future__ import annotations\n\nimport sys\nimport typing_extensions\nfrom typing import Any, Type, Union, Literal, Op"
  },
  {
    "path": "src/openai/_utils/_datetime_parse.py",
    "chars": 4204,
    "preview": "\"\"\"\nThis file contains code from https://github.com/pydantic/pydantic/blob/main/pydantic/v1/datetime_parse.py\nwithout th"
  },
  {
    "path": "src/openai/_utils/_json.py",
    "chars": 962,
    "preview": "import json\nfrom typing import Any\nfrom datetime import datetime\nfrom typing_extensions import override\n\nimport pydantic"
  },
  {
    "path": "src/openai/_utils/_logs.py",
    "chars": 1351,
    "preview": "import os\nimport logging\nfrom typing_extensions import override\n\nfrom ._utils import is_dict\n\nlogger: logging.Logger = l"
  },
  {
    "path": "src/openai/_utils/_proxy.py",
    "chars": 1975,
    "preview": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom typing import Generic, TypeVar, Iterable, c"
  },
  {
    "path": "src/openai/_utils/_reflection.py",
    "chars": 1426,
    "preview": "from __future__ import annotations\n\nimport inspect\nfrom typing import Any, Callable\n\n\ndef function_has_argument(func: Ca"
  },
  {
    "path": "src/openai/_utils/_resources_proxy.py",
    "chars": 589,
    "preview": "from __future__ import annotations\n\nfrom typing import Any\nfrom typing_extensions import override\n\nfrom ._proxy import L"
  },
  {
    "path": "src/openai/_utils/_streams.py",
    "chars": 289,
    "preview": "from typing import Any\nfrom typing_extensions import Iterator, AsyncIterator\n\n\ndef consume_sync_iterator(iterator: Itera"
  },
  {
    "path": "src/openai/_utils/_sync.py",
    "chars": 1589,
    "preview": "from __future__ import annotations\n\nimport asyncio\nimport functools\nfrom typing import TypeVar, Callable, Awaitable\nfrom"
  },
  {
    "path": "src/openai/_utils/_transform.py",
    "chars": 15999,
    "preview": "from __future__ import annotations\n\nimport io\nimport base64\nimport pathlib\nfrom typing import Any, Mapping, TypeVar, cas"
  },
  {
    "path": "src/openai/_utils/_typing.py",
    "chars": 4786,
    "preview": "from __future__ import annotations\n\nimport sys\nimport typing\nimport typing_extensions\nfrom typing import Any, TypeVar, I"
  },
  {
    "path": "src/openai/_utils/_utils.py",
    "chars": 12667,
    "preview": "from __future__ import annotations\n\nimport os\nimport re\nimport inspect\nimport functools\nfrom typing import (\n    TYPE_CH"
  },
  {
    "path": "src/openai/_version.py",
    "chars": 159,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n__title__ = \"openai\"\n__version__ "
  },
  {
    "path": "src/openai/cli/__init__.py",
    "chars": 31,
    "preview": "from ._cli import main as main\n"
  },
  {
    "path": "src/openai/cli/_api/__init__.py",
    "chars": 58,
    "preview": "from ._main import register_commands as register_commands\n"
  },
  {
    "path": "src/openai/cli/_api/_main.py",
    "chars": 501,
    "preview": "from __future__ import annotations\n\nfrom argparse import ArgumentParser\n\nfrom . import chat, audio, files, image, models"
  },
  {
    "path": "src/openai/cli/_api/audio.py",
    "chars": 3757,
    "preview": "from __future__ import annotations\n\nimport sys\nfrom typing import TYPE_CHECKING, Any, Optional, cast\nfrom argparse impor"
  },
  {
    "path": "src/openai/cli/_api/chat/__init__.py",
    "chars": 300,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\nfrom argparse import ArgumentParser\n\nfrom . import "
  },
  {
    "path": "src/openai/cli/_api/chat/completions.py",
    "chars": 5536,
    "preview": "from __future__ import annotations\n\nimport sys\nfrom typing import TYPE_CHECKING, List, Optional, cast\nfrom argparse impo"
  },
  {
    "path": "src/openai/cli/_api/completions.py",
    "chars": 6334,
    "preview": "from __future__ import annotations\n\nimport sys\nfrom typing import TYPE_CHECKING, Optional, cast\nfrom argparse import Arg"
  },
  {
    "path": "src/openai/cli/_api/files.py",
    "chars": 2345,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, cast\nfrom argparse import ArgumentParser\n\nfro"
  },
  {
    "path": "src/openai/cli/_api/fine_tuning/__init__.py",
    "chars": 286,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\nfrom argparse import ArgumentParser\n\nfrom . import "
  },
  {
    "path": "src/openai/cli/_api/fine_tuning/jobs.py",
    "chars": 5311,
    "preview": "from __future__ import annotations\n\nimport json\nfrom typing import TYPE_CHECKING\nfrom argparse import ArgumentParser\n\nfr"
  },
  {
    "path": "src/openai/cli/_api/image.py",
    "chars": 5014,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, cast\nfrom argparse import ArgumentParser\n\nfro"
  },
  {
    "path": "src/openai/cli/_api/models.py",
    "chars": 1295,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\nfrom argparse import ArgumentParser\n\nfrom .._utils "
  },
  {
    "path": "src/openai/cli/_cli.py",
    "chars": 6779,
    "preview": "from __future__ import annotations\n\nimport sys\nimport logging\nimport argparse\nfrom typing import Any, List, Type, Option"
  },
  {
    "path": "src/openai/cli/_errors.py",
    "chars": 471,
    "preview": "from __future__ import annotations\n\nimport sys\n\nimport pydantic\n\nfrom ._utils import Colors, organization_info\nfrom .._e"
  },
  {
    "path": "src/openai/cli/_models.py",
    "chars": 491,
    "preview": "from typing import Any\nfrom typing_extensions import ClassVar\n\nimport pydantic\n\nfrom .. import _models\nfrom .._compat im"
  },
  {
    "path": "src/openai/cli/_progress.py",
    "chars": 1406,
    "preview": "from __future__ import annotations\n\nimport io\nfrom typing import Callable\nfrom typing_extensions import override\n\n\nclass"
  },
  {
    "path": "src/openai/cli/_tools/__init__.py",
    "chars": 58,
    "preview": "from ._main import register_commands as register_commands\n"
  },
  {
    "path": "src/openai/cli/_tools/_main.py",
    "chars": 467,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\nfrom argparse import ArgumentParser\n\nfrom . import "
  },
  {
    "path": "src/openai/cli/_tools/fine_tunes.py",
    "chars": 1543,
    "preview": "from __future__ import annotations\n\nimport sys\nfrom typing import TYPE_CHECKING\nfrom argparse import ArgumentParser\n\nfro"
  },
  {
    "path": "src/openai/cli/_tools/migrate.py",
    "chars": 4497,
    "preview": "from __future__ import annotations\n\nimport os\nimport sys\nimport shutil\nimport tarfile\nimport platform\nimport subprocess\n"
  },
  {
    "path": "src/openai/cli/_utils.py",
    "chars": 848,
    "preview": "from __future__ import annotations\n\nimport sys\n\nimport openai\n\nfrom .. import OpenAI, _load_client\nfrom .._compat import"
  },
  {
    "path": "src/openai/helpers/__init__.py",
    "chars": 130,
    "preview": "from .microphone import Microphone\nfrom .local_audio_player import LocalAudioPlayer\n\n__all__ = [\"Microphone\", \"LocalAudi"
  },
  {
    "path": "src/openai/helpers/local_audio_player.py",
    "chars": 5852,
    "preview": "# mypy: ignore-errors\nfrom __future__ import annotations\n\nimport queue\nimport asyncio\nfrom typing import Any, Union, Cal"
  },
  {
    "path": "src/openai/helpers/microphone.py",
    "chars": 3341,
    "preview": "# mypy: ignore-errors\nfrom __future__ import annotations\n\nimport io\nimport time\nimport wave\nimport asyncio\nfrom typing i"
  },
  {
    "path": "src/openai/lib/.keep",
    "chars": 224,
    "preview": "File generated from our OpenAPI spec by Stainless.\n\nThis directory can be used to store custom files to expand the SDK.\n"
  },
  {
    "path": "src/openai/lib/__init__.py",
    "chars": 126,
    "preview": "from ._tools import pydantic_function_tool as pydantic_function_tool\nfrom ._parsing import ResponseFormatT as ResponseFo"
  },
  {
    "path": "src/openai/lib/_old_api.py",
    "chars": 1947,
    "preview": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\nfrom typing_extensions import override\n\nfrom ."
  },
  {
    "path": "src/openai/lib/_parsing/__init__.py",
    "chars": 483,
    "preview": "from ._completions import (\n    ResponseFormatT as ResponseFormatT,\n    has_parseable_input,\n    has_parseable_input as "
  },
  {
    "path": "src/openai/lib/_parsing/_completions.py",
    "chars": 10000,
    "preview": "from __future__ import annotations\n\nimport json\nimport logging\nfrom typing import TYPE_CHECKING, Any, Iterable, cast\nfro"
  },
  {
    "path": "src/openai/lib/_parsing/_responses.py",
    "chars": 6158,
    "preview": "from __future__ import annotations\n\nimport json\nfrom typing import TYPE_CHECKING, List, Iterable, cast\nfrom typing_exten"
  },
  {
    "path": "src/openai/lib/_pydantic.py",
    "chars": 5623,
    "preview": "from __future__ import annotations\n\nimport inspect\nfrom typing import Any, TypeVar\nfrom typing_extensions import TypeGua"
  },
  {
    "path": "src/openai/lib/_realtime.py",
    "chars": 3980,
    "preview": "from __future__ import annotations\n\nimport json\nfrom typing_extensions import override\n\nimport httpx\n\nfrom openai import"
  },
  {
    "path": "src/openai/lib/_tools.py",
    "chars": 1969,
    "preview": "from __future__ import annotations\n\nfrom typing import Any, Dict, cast\n\nimport pydantic\n\nfrom ._pydantic import to_stric"
  },
  {
    "path": "src/openai/lib/_validators.py",
    "chars": 35284,
    "preview": "# pyright: basic\nfrom __future__ import annotations\n\nimport os\nimport sys\nfrom typing import Any, TypeVar, Callable, Opt"
  },
  {
    "path": "src/openai/lib/azure.py",
    "chars": 26537,
    "preview": "from __future__ import annotations\n\nimport os\nimport inspect\nfrom typing import Any, Union, Mapping, TypeVar, Callable, "
  },
  {
    "path": "src/openai/lib/streaming/__init__.py",
    "chars": 379,
    "preview": "from ._assistants import (\n    AssistantEventHandler as AssistantEventHandler,\n    AssistantEventHandlerT as AssistantEv"
  },
  {
    "path": "src/openai/lib/streaming/_assistants.py",
    "chars": 40692,
    "preview": "from __future__ import annotations\n\nimport asyncio\nfrom types import TracebackType\nfrom typing import TYPE_CHECKING, Any"
  },
  {
    "path": "src/openai/lib/streaming/_deltas.py",
    "chars": 2502,
    "preview": "from __future__ import annotations\n\nfrom ..._utils import is_dict, is_list\n\n\ndef accumulate_delta(acc: dict[object, obje"
  },
  {
    "path": "src/openai/lib/streaming/chat/__init__.py",
    "chars": 1305,
    "preview": "from ._types import (\n    ParsedChoiceSnapshot as ParsedChoiceSnapshot,\n    ParsedChatCompletionSnapshot as ParsedChatCo"
  },
  {
    "path": "src/openai/lib/streaming/chat/_completions.py",
    "chars": 30704,
    "preview": "from __future__ import annotations\n\nimport inspect\nfrom types import TracebackType\nfrom typing import TYPE_CHECKING, Any"
  },
  {
    "path": "src/openai/lib/streaming/chat/_events.py",
    "chars": 2618,
    "preview": "from typing import List, Union, Generic, Optional\nfrom typing_extensions import Literal\n\nfrom ._types import ParsedChatC"
  },
  {
    "path": "src/openai/lib/streaming/chat/_types.py",
    "chars": 739,
    "preview": "from __future__ import annotations\n\nfrom typing_extensions import TypeAlias\n\nfrom ....types.chat import ParsedChoice, Pa"
  },
  {
    "path": "src/openai/lib/streaming/responses/__init__.py",
    "chars": 543,
    "preview": "from ._events import (\n    ResponseTextDoneEvent as ResponseTextDoneEvent,\n    ResponseTextDeltaEvent as ResponseTextDel"
  },
  {
    "path": "src/openai/lib/streaming/responses/_events.py",
    "chars": 5576,
    "preview": "from __future__ import annotations\n\nfrom typing import Optional\nfrom typing_extensions import Union, Generic, TypeVar, A"
  },
  {
    "path": "src/openai/lib/streaming/responses/_responses.py",
    "chars": 13614,
    "preview": "from __future__ import annotations\n\nimport inspect\nfrom types import TracebackType\nfrom typing import Any, List, Generic"
  },
  {
    "path": "src/openai/lib/streaming/responses/_types.py",
    "chars": 276,
    "preview": "from __future__ import annotations\n\nfrom typing_extensions import TypeAlias\n\nfrom ....types.responses import ParsedRespo"
  },
  {
    "path": "src/openai/pagination.py",
    "chars": 4770,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom typing import Any, List, Gen"
  },
  {
    "path": "src/openai/py.typed",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/openai/resources/__init__.py",
    "chars": 6421,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .beta import (\n    Beta,\n   "
  },
  {
    "path": "src/openai/resources/audio/__init__.py",
    "chars": 1687,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .audio import (\n    Audio,\n "
  },
  {
    "path": "src/openai/resources/audio/audio.py",
    "chars": 6481,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/audio/speech.py",
    "chars": 10570,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/audio/transcriptions.py",
    "chars": 53133,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/audio/translations.py",
    "chars": 15609,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/batches.py",
    "chars": 21582,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/__init__.py",
    "chars": 1570,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .beta import (\n    Beta,\n   "
  },
  {
    "path": "src/openai/resources/beta/assistants.py",
    "chars": 50722,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/beta.py",
    "chars": 6529,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/chatkit/__init__.py",
    "chars": 1216,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .chatkit import (\n    ChatKi"
  },
  {
    "path": "src/openai/resources/beta/chatkit/chatkit.py",
    "chars": 4333,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/chatkit/sessions.py",
    "chars": 12087,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/chatkit/threads.py",
    "chars": 20327,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/realtime/__init__.py",
    "chars": 1412,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .realtime import (\n    Realt"
  },
  {
    "path": "src/openai/resources/beta/realtime/realtime.py",
    "chars": 43676,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/realtime/sessions.py",
    "chars": 22098,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/realtime/transcription_sessions.py",
    "chars": 14124,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/threads/__init__.py",
    "chars": 1177,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .runs import (\n    Runs,\n   "
  },
  {
    "path": "src/openai/resources/beta/threads/messages.py",
    "chars": 30922,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/threads/runs/__init__.py",
    "chars": 771,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .runs import (\n    Runs,\n   "
  },
  {
    "path": "src/openai/resources/beta/threads/runs/runs.py",
    "chars": 156343,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/threads/runs/steps.py",
    "chars": 17109,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/beta/threads/threads.py",
    "chars": 98777,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/chat/__init__.py",
    "chars": 849,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .chat import (\n    Chat,\n   "
  },
  {
    "path": "src/openai/resources/chat/chat.py",
    "chars": 4072,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/chat/completions/__init__.py",
    "chars": 901,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .messages import (\n    Messa"
  },
  {
    "path": "src/openai/resources/chat/completions/completions.py",
    "chars": 166188,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/chat/completions/messages.py",
    "chars": 8224,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/completions.py",
    "chars": 60193,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/containers/__init__.py",
    "chars": 849,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .files import (\n    Files,\n "
  },
  {
    "path": "src/openai/resources/containers/containers.py",
    "chars": 20696,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/containers/files/__init__.py",
    "chars": 810,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .files import (\n    Files,\n "
  },
  {
    "path": "src/openai/resources/containers/files/content.py",
    "chars": 6491,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/containers/files/files.py",
    "chars": 21110,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/conversations/__init__.py",
    "chars": 888,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .items import (\n    Items,\n "
  },
  {
    "path": "src/openai/resources/conversations/api.md",
    "chars": 3047,
    "preview": "# Conversations\n\nTypes:\n\n```python\nfrom openai.types.conversations import (\n    ComputerScreenshotContent,\n    Conversat"
  },
  {
    "path": "src/openai/resources/conversations/conversations.py",
    "chars": 19617,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/conversations/items.py",
    "chars": 24081,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/embeddings.py",
    "chars": 12648,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom __future__ import annotation"
  },
  {
    "path": "src/openai/resources/evals/__init__.py",
    "chars": 771,
    "preview": "# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nfrom .runs import (\n    Runs,\n   "
  }
]

// ... and 1062 more files (download for full content)

About this extraction

This page contains the full source code of the openai/openai-python GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1262 files (5.2 MB), approximately 1.4M tokens, and a symbol index with 6484 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!