apidrift

Stripe changed its API. This is the line in your code that breaks.

A real example

Stripe's 2026-10-28.endive release removed payment_method_types from POST /v1/payment_intents (Stripe's changelog). Run against Stripe's own sample repository, stripe-samples/accept-a-payment at 1a57c3b, apidrift flags the 4 servers that still send it, with a link to each line.

Stripe 2026-10-28.endive breaks 4 Stripe call sites

! custom-payment-flow/server/node-typescript/src/server.ts:145
POST /v1/payment_intents  via stripe.paymentIntents.create
[body_removed] body field payment_method_types was removed
why: payment_method_types is sent here
! custom-payment-flow/server/node/server.js:151
POST /v1/payment_intents  via stripe.paymentIntents.create
[body_removed] body field payment_method_types was removed
why: payment_method_types is sent here
! custom-payment-flow/server/python/server.py:118
POST /v1/payment_intents  via stripe.PaymentIntent.create
[body_removed] body field payment_method_types was removed
why: payment_method_types is sent here
! custom-payment-flow/server/ruby/server.rb:82
POST /v1/payment_intents  via Stripe::PaymentIntent.create
[body_removed] body field payment_method_types was removed
why: payment_method_types is sent here

39 Stripe call sites were scanned; the 35 that are unaffected are not reported.

apidrift watches Stripe's published OpenAPI spec. When a release removes a field, retires an endpoint, or makes a new parameter required, it finds the call sites in your repository that send exactly that, and opens one issue with a link to each line. Nothing else: no digest of every change, no issue when you are unaffected.

Install on GitHub

Read access to code and permission to open issues; nothing else. apidrift downloads a snapshot of your default branch, reads it, and deletes it when the check ends. It never runs your code. It checks after each push to your default branch and whenever Stripe publishes a new spec.

How it works

  1. Stripe publishes spec3.sdk.json; apidrift keeps every version (the latest it holds is 2026-10-28.endive).
  2. Each release is diffed against the one your code last passed.
  3. Your Python, JavaScript, TypeScript and Ruby are parsed for Stripe calls and the fields they send. Only the calls the diff touches are reported.

What it does not do yet