APIs change.
Your code gets a pull request.
Driftfix reads a provider's breaking change, rewrites every affected call in your codebase, proves the fix with your own tests and opens a pull request your team can review in a minute.
Paste old OpenAI code. Get the migrated file, the diff and the pull request, right here.
APIs break on a schedule now. Someone on your team has to notice, read the changelog and rewrite the calls before the date.
| Provider | How often it breaks | Old versions | Source |
|---|---|---|---|
| Google Ads | Four major API versions a year since January 2026 | sunset after ~12 months | PPC Land |
| Stripe | A potentially breaking major release twice a year | pinned until you upgrade | Stripe docs |
| Shopify | A new Admin API version every quarter | supported ~12 months | Shopify docs |
| Salesforce | Retired API versions 21 through 30 in 2025 | calls now fail | Salesforce |
| OpenAI | Removed the module-level Python API in 1.0 | raises APIRemovedInV1 | Migration guide |
| OpenAI (Node) | Replaced OpenAIApi and Configuration in 4.0 | "is not a constructor" | Migration guide |
of 251 REST API versions with breaking changes gave no deprecation notice in the version before. Teams usually find out when production breaks.
Study on arXivChangelog in, verified pull request out. Every step is inspectable, and nothing is guessed.
Map the change
Each breaking change becomes an entry in the change map: versions, dates, changelog and rewrite rules.
OPENAI_PYTHON_V1 = Change(
id="openai-python-v1",
from_version="0.x",
to_version=">=1.0",
released="2023-11-06",
)Find every call
The code is parsed, and the API is followed through aliases, loops and comprehensions, not grepped.
import openai as oa
r = oa.ChatCompletion.create(...)
for row in r["data"]:
print(row["embedding"])Rewrite the syntax tree
Edits land on the concrete syntax tree, so comments, quoting and formatting survive.
Test, then open the PR
Your tests run before and after. If they don't pass, the patch is rolled back and nothing is opened.
✕ tests before 3 failed ✓ removed calls 0 left ✓ tests after 3 passed ✓ pull request opened
The same engine on the command line
Run it in CI or on a laptop. It scans, patches, runs the repository's own tests, commits to a branch and writes the pull request.
$ driftfix run . driftfix 0.1.0 support-bot ▸ Change OpenAI Python SDK 0.x -> >=1.0 ▸ Scan 3 Python files, 1 affected, 8 edits ▸ Tests before 3 failed APIRemovedInV1 ▸ Patch app.py +8 -7 ▸ Verify compiled 1 file, tests 3 passed ▸ Commit d0d3c0f on driftfix/openai-python-v1 ▸ Pull request ready DRIFTFIX_PR.md Done in 2.3s. 8 edits, verified.
Real pull requests to real projects. Each checked against the current SDK before it was opened.
package.json and pnpm lockfile. tsc --noEmit passes on openai 4.104.OpenBuilt to be merged. Safe enough to let near production code.
Pull requests only
Driftfix works on its own branch and never pushes to a default branch. Your team reviews and merges.
Rolls back on failure
If tests that passed before the patch fail after it, the patch is discarded and no pull request is opened.
Says what it didn't do
Patterns it can't rewrite safely are listed under "Needs a human look", with file and line, never guessed.
Two sides of the same breaking change.
Stay current across every vendor
Connect repositories once. When an API you depend on ships a breaking change, you get a review-ready pull request instead of a pager alert.
- Every vendor's deprecations in one place
- Branches and PRs only, never main
- Ambiguous code flagged for a human
Ship the change, not just the announcement
Stop waiting for integrators to read the changelog. Push the migration into their code and retire old versions on schedule.
- See which integrators are still on a retiring version
- Send each of them a tested pull request
- Fewer tickets and fewer delayed sunsets
.data unwrapping, types, package.json and lockfilesLiveFree to run yourself. Pay when you want it to happen without you.
Open source
The CLI and the GitHub Action. Every published migration, on your own machine or CI.
driftfix scanandrun- Tests before and after, rollback
- Job summary on every pull request
Team
Hosted Driftfix watches your vendors and opens the pull request the day a breaking change ships.
- Private repositories through a GitHub App
- Change feed for every API you use
- Slack alerts and a migrations dashboard
API providers
Ship your breaking change as tested pull requests to the integrators who depend on it.
- Rules written with your team
- Adoption by integrator and version
- Sunset dates you can keep
Your first migration is free.
Send a repository that's stuck on an old API version. We'll run Driftfix on it and send you the pull request with test results, usually within a day.
hello@driftfix.dev