apisloth

API change intelligence · Meta Marketing API

Live demonstration

The Meta Marketing API ships no spec. apisloth watches it anyway.

No OpenAPI. Login-walled JavaScript docs. The kind of API you simply cannot monitor for breaking changes — until you can.

OpenAPI specs published
0
rendered from a 2.6 MB JS shell
82 KB
endpoints extracted
12
version detected
v25.0

The problem

Meta's docs are an app, not a document.

Hit developers.facebook.com/docs/marketing-api with a plain request and you get 2.6MB of React shell and a login wall — not one machine-readable endpoint. Every diffing tool on the market needs a spec to watch. Meta doesn't ship one. So nobody watches the world's biggest ads API for breaking changes. That's the gap.

What apisloth sees

A clean, diffable spec — synthesized from prose.

apisloth renders the page in a real browser, then an agent reads the documentation the way a developer would and reconstructs the API surface. From the Campaign reference alone:

Ad Campaign Group · v25.012 endpoints · 13 schemas
  • POST/act_{ad_account_id}/campaigns
  • GET/{campaign_id}
  • POST/{campaign_id}
  • DELETE/{campaign_id}
  • GET/{campaign_id}/ads
  • GET/{campaign_id}/adsets
  • GET/{campaign_id}/ad_studies
  • GET/{campaign_id}/adrules_governed
  • GET/{campaign_id}/copies
  • POST/{campaign_id}/copies
  • POST/act_{ad_account_id}/async_batch_requests
  • DELETE/act_{ad_account_id}/campaigns

The moment it earns its keep

Meta tightens a parameter. Your integration breaks. apisloth catches it first.

We took the live spec, applied a change Meta could ship tomorrow, and let the engine judge it. This is its unedited output — every finding carries a severity, a confidence score, and the exact before/after evidence it reasoned from.

Breaking
95% confidence

A required parameter appeared

POST /act_{ad_account_id}/campaigns · special_ad_categories

The special_ad_categories parameter changed from required: false to required: true. Every client that creates a campaign without it will start getting rejected.

Evidence · before → after

- { "name": "special_ad_categories", "required": false }+ { "name": "special_ad_categories", "required": true, "type": "array" }
Additive
90% confidence

A new endpoint shipped

GET /{campaign_id}/insights_async

A new async-insights edge appeared that wasn't in the previous snapshot. Safe to ignore today — but now it's on your radar the moment it matters.

The Meta spec above is extracted live from Meta's public docs. The change shown is an illustrative example run through the real engine — the severity, confidence, and evidence are its genuine output, not hand-written.

How it works

Render. Understand. Diff. Judge.

  1. 01

    Render

    A real browser turns login-walled JS docs into clean text.

  2. 02

    Extract

    An agent reconstructs endpoints, params & schemas — and cites the source.

  3. 03

    Fingerprint

    Normalized into a stable, diffable spec — no false alarms from reworded prose.

  4. 04

    Diff

    Structural comparison against the last snapshot surfaces real candidates.

  5. 05

    Judge

    Each change is classified breaking / additive / deprecation, with evidence.

  6. 06

    Verify & alert

    A skeptic pass kills the noise; only real changes reach you.

Watch any API — even the ones without a spec.

Point apisloth at a docs URL. Connect it to your coding agent. Sleep through the next breaking change.

claude mcp add --transport http apisloth https://app.apisloth.dev/api/mcp