---
title: "Migration Guide - LiteLLM v1.0.0+"
description: "When we have breaking changes (i.e. going from 1.x.x to 2.x.x), we will document those changes here."
type: skill
canonical_url: https://claudary.paisolsolutions.com/skills/migration-2
source: "Claudary"
difficulty: intermediate
author: "Claude Code Knowledge Pack"
date: 2026-07-10T11:31:04.073Z
license: CC-BY-4.0
attribution: "Migration Guide - LiteLLM v1.0.0+ — Claudary (https://claudary.paisolsolutions.com/skills/migration-2)"
---

# Migration Guide - LiteLLM v1.0.0+
When we have breaking changes (i.e. going from 1.x.x to 2.x.x), we will document those changes here.

## Overview

# Migration Guide - LiteLLM v1.0.0+ 

When we have breaking changes (i.e. going from 1.x.x to 2.x.x), we will document those changes here.


## `1.0.0` 

**Last Release before breaking change**: 0.14.0

**What changed?**

- Requires `openai>=1.0.0`
- `openai.InvalidRequestError` → `openai.BadRequestError`
- `openai.ServiceUnavailableError` → `openai.APIStatusError`
- *NEW* litellm client, allow users to pass api_key
    - `litellm.Litellm(api_key="sk-123")`
- response objects now inherit from `BaseModel` (prev. `OpenAIObject`)
- *NEW* default exception - `APIConnectionError` (prev. `APIError`)
- litellm.get_max_tokens() now returns an int not a dict
    ```python
    max_tokens = litellm.get_max_tokens("gpt-3.5-turbo") # returns an int not a dict 
    assert max_tokens==4097
    ```
- Streaming - OpenAI Chunks now return `None` for empty stream chunks. This is how to process stream chunks with content
    ```python
    response = litellm.completion(model="gpt-3.5-turbo", messages=messages, stream=True)
    for part in response:
        print(part.choices[0].delta.content or "")
    ```

**How can we communicate changes better?**
Tell us
- [Discord](https://discord.com/invite/wuPM9dRgDw)
- Email (support@berri.ai)

---

Source: [Claudary](https://claudary.paisolsolutions.com/skills/migration-2) · https://claudary.paisolsolutions.com
