groq breaking changes
Every breaking API change we have recorded in groq on PyPI: 32 breaking changes in 3 versions. Below are its newest 3 versions, removals and renames first, each with its source.
Newest change September 27, 2025

On this page
0.32.0
- Behavior changed
Optional parameters now use the Omit type instead of NotGiven in the package's types, which may affect code that type-checks against those sentinel values. github.com - Signature changed
groq.BaseModel.model_dump
Was def model_dump(self, *, mode: Literal['json', 'python'] | str = 'python', include: IncEx | None = None, exclude: IncEx | None = None, by_alias: bool = False, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none... pypi.org - Signature changed
groq.BaseModel.model_dump_json
Was def model_dump_json(self, *, indent: int | None = None, include: IncEx | None = None, exclude: IncEx | None = None, by_alias: bool = False, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False... pypi.org - Signature changed
groq.Groq.__init__
Was def __init__(self, *, api_key: str | None = None, base_url: str | httpx.URL | None = None, timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN, max_retries: int = DEFAULT_MAX_RETRIES, default_headers: Mapping[str, str] | None =... pypi.org - Signature changed
groq.Groq.copy
Was def copy(self, *, api_key: str | None = None, base_url: str | httpx.URL | None = None, timeout: float | Timeout | None | NotGiven = NOT_GIVEN, http_client: httpx.Client | None = None, max_retries: int | NotGiven = NOT_GIVEN... pypi.org - Signature changed
groq.resources.audio.Speech.create
Was def create(self, *, input: str, model: Union[str, Literal['playai-tts', 'playai-tts-arabic']], voice: str, response_format: Literal['flac', 'mp3', 'mulaw', 'ogg', 'wav'] | NotGiven = NOT_GIVEN, sample_rate: Literal[8000, 16000, 22050... pypi.org - Signature changed
groq.resources.audio.Transcriptions.create
Was def create(self, *, model: Union[str, Literal['whisper-large-v3', 'whisper-large-v3-turbo']], file: FileTypes | NotGiven = NOT_GIVEN, language: Union[str, Literal['en', 'zh', 'de', 'es', 'ru', 'ko', 'fr', 'ja', 'pt', 'tr', 'pl', 'ca'... pypi.org - Signature changed
groq.resources.audio.Translations.create
Was def create(self, *, model: Union[str, Literal['whisper-large-v3', 'whisper-large-v3-turbo']], file: FileTypes | NotGiven = NOT_GIVEN, prompt: str | NotGiven = NOT_GIVEN, response_format: Literal['json', 'text', 'verbose_json'] |... pypi.org - Signature changed
groq.resources.Batches.cancel
Was def cancel(self, batch_id: str, *, extra_headers: Headers | None = None, extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN) -> BatchCancelResponse; now def... pypi.org - Signature changed
groq.resources.Batches.create
Was def create(self, *, completion_window: str, endpoint: Literal['/v1/chat/completions'], input_file_id: str, metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN, extra_headers: Headers | None = None, extra_query: Query | None =... pypi.org
And 12 more in this version.
0.31.0
- Signature changed
groq.resources.chat.Completions.create
Was def create(self, *, messages: Iterable[ChatCompletionMessageParam], model: Union[str, Literal['gemma2-9b-it', 'llama-3.3-70b-versatile', 'llama-3.1-8b-instant', 'llama-guard-3-8b', 'llama3-70b-8192', 'llama3-8b-8192']]... pypi.org - Signature changed
groq.types.chat.ChatCompletionSystemMessageParam.role
Was role: Required[Literal['system']]; now role: Required[Literal['system', 'developer']]. pypi.org - Signature changed
groq.types.chat.ChatCompletionToolParam.function
Was function: Required[FunctionDefinition]; now function: FunctionDefinition. pypi.org - Signature changed
groq.types.chat.ChatCompletionToolParam.type
Was type: Required[Literal['function']]; now type: Required[Literal['function', 'browser_search', 'code_interpreter']]. pypi.org - Signature changed
groq.types.chat.CompletionCreateParams.reasoning_effort
Was reasoning_effort: Optional[Literal['none', 'default']]; now reasoning_effort: Optional[Literal['none', 'default', 'low', 'medium', 'high']]. pypi.org
0.30.0
- Signature changed
groq.resources.chat.Completions.create
Was def create(self, *, messages: Iterable[ChatCompletionMessageParam], model: Union[str, Literal['gemma2-9b-it', 'llama-3.3-70b-versatile', 'llama-3.1-8b-instant', 'llama-guard-3-8b', 'llama3-70b-8192', 'llama3-8b-8192']]... pypi.org - Signature changed
groq.types.chat.ChatCompletionAssistantMessageParam.content
Was content: Optional[str]; now content: Union[str, Iterable[ChatCompletionContentPartTextParam], None]. pypi.org - Signature changed
groq.types.chat.ChatCompletionSystemMessageParam.content
Was content: Required[str]; now content: Required[Union[str, Iterable[ChatCompletionContentPartTextParam]]]. pypi.org - Signature changed
groq.types.chat.ChatCompletionToolMessageParam.content
Was content: Required[str]; now content: Required[Union[str, Iterable[ChatCompletionContentPartParam]]]. pypi.org - Signature changed
groq.types.chat.CompletionCreateParams.service_tier
Was service_tier: Optional[Literal['auto', 'on_demand', 'flex']]; now service_tier: Optional[Literal['auto', 'on_demand', 'flex', 'performance']]. pypi.org
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The API reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

Put your code on continuous management.
Scan a public repository now, or give your agent one line.
See how out of date your code is.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp