# Changelog

> Changes to the Funnelfeedr API, newest first.

The API is versioned in the URL (`/external/v1`). Within v1 we only make additive changes — new endpoints, new optional fields, new error codes — so build clients that ignore fields and codes they don't know. A breaking change would ship as `/external/v2`, announced here well in advance.

## 2026-10-06 — v1

The first version of the Funnelfeedr API.

- Account-level API keys, created, rolled and revoked in **Settings → API keys**, each with a 30-day request log. Every key can call every endpoint, the ones that spend credits included.
- Matching: `POST /organizations/match` (`matched`, `not_found`, `invalid` per item) and `POST /people/match` (also `ambiguous`).
- Organization basics free on every match; the details (size, revenue, website, descriptions, technologies, keywords, tags, address) revealed with `reveal: ["details"]` on `organizations/match`, 0.2 credits per organization by default, valid for a year.
- Contacts: `POST /organizations/contacts/match`, the contacts at up to 25 organizations that match the account's target contact roles (every contact when it has none), each organization paged with its own cursor.
- Switchboards: `POST /organizations/switchboards/match`, an organization's main phone line, with an optional reveal of its number and email.
- Reveal of email and phone: `POST /contacts/reveal` and reveal inside `people/match` and `organizations/switchboards/match`, with `dryRun` quotes, a required `maxCredits` cap and all-or-nothing charging (the organization details reveal works the same way). A contact's LinkedIn URL is never masked and never charged.
- `GET /credits` for the balance, and `Funnelfeedr-Credits-Remaining` on it and on every response that can spend.
- Batches of 1–25 items, RFC 9457 errors, `Idempotency-Key`, per-key rate limits with `RateLimit` headers.
- Docs for agents: `llms.txt`, `llms-full.txt`, a markdown version of every page and an OpenAPI spec.
