> ## Documentation Index
> Fetch the complete documentation index at: https://www.hirebase.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Hirebase Changelog

> Release notes for the Hirebase API

## v2.5.0 — September 2026

Metering consolidation, quota hardening, and a salary benchmark endpoint.

### 📊 Metering & plans

* **One jobs meter.** Everything that returns jobs — lexical search, vector search, neural search, company jobs, exports, expired-job exports — now bills `m_jobs_api_calls`. The separate vector, semantic, and export meters are retired; company routes bill `m_company_api_calls`. See [What each endpoint costs](/docs/api-reference/billing/usage-headers#what-each-endpoint-costs).
* `GET /v2/jobs/expired-jobs` now costs **0** (it returns identifiers only). `POST /v2/jobs/expired-jobs/export` is also free: expired data is not billed, only live job data is.
* [`POST /v2/jobs/estimate`](/docs/api-reference/jobs/estimate) is documented: free, and still available once you hit a cap.
* **Export on every plan**, including Free (bounded by the 500-job allowance).
* **Pro** API keys get 10,000 jobs (metered overage) and 2,000 companies (hard cap) per month.
* Plan allowances and overage rates are now listed in one place: [What each plan includes](/docs/api-reference/billing/usage-headers#what-each-plan-includes).

### 🛡️ Caps

* Hard caps are enforced **before** a request runs, using its worst-case cost (the requested `limit`). A request that cannot fit in the remaining allowance is refused with `429` / `X-Billing-Code: limit_exceeded` and a message stating how many units remain; parallel requests can no longer overshoot a cap.
* Cap and feature errors now say where to upgrade (`/v2/billing/portal`).

### 🔧 Fixes

* `Hirebase-Usage-*` headers are back on every metered response for paid plans (they were missing for accounts whose billing period was stored in an older format), and `Period-Start`/`Period-End` now agree with [Usage Summary](/docs/api-reference/billing/usage-summary).
* Usage counters no longer reset during the nightly billing sync.

### 💰 Salary Benchmark

* **New endpoint:** [`POST /v2/jobs/salary-benchmark`](/docs/api-reference/jobs/salary-benchmark) — market percentiles, sample size, confidence grade, and the percentile of a proposed range. One `m_salary_benchmarks` unit per request; 3/month on Free, 25/month on API plans, 500/month on Pro.

### 🐍 Python SDK 0.2.x

* New methods: `jobs.estimate`, `jobs.expired`, `jobs.export_expired`, `jobs.vsearch`, `jobs.salary_benchmark`, `companies.jobs`, `usage.get`, `resumes.upload` / `get` / `parse` / `upload_and_parse`, `tasks.get`.
* `client.last_usage` exposes the usage headers after every call; `QuotaExceededError` distinguishes plan-cap 429s from rate limits; `RateLimitError.retry_after`.

## v2.4.0 — August 2026

Billing, metering, and export release: usage visibility, per-plan quotas, and a new expired-jobs export pipeline.

### 🔓 Authentication (breaking)

* **All data endpoints now require an API key on every request**, including page 1 of search results. Anonymous requests return `401`. (Supersedes the v2.3.0 free-first-page behavior; only the reference-data endpoints remain keyless.) See [Authentication](/docs/authentication).

### 📤 Exports

* **New endpoint:** [`POST /v2/jobs/expired-jobs/export`](/docs/api-reference/jobs/export-expired-jobs) — async JSONL export of the expired-jobs feed since a date. Flat cost of 1 unit per export; the recommended path for historical backfills (no page-depth limits).
* `notify: true` on export requests sends a completion email with the download link.
* New task pages: [List Tasks](/docs/api-reference/tasks/list-tasks) and [Cancel Task](/docs/api-reference/tasks/cancel-task) are documented; task objects now include `notify`, and `type` may be `export_expired_jobs`.

### 📊 Billing & Usage

* **New endpoints:** [`GET /v2/billing/usage/summary`](/docs/api-reference/billing/usage-summary) (current-period per-meter usage, plan, and allowances) and [`GET /v2/billing/usage/daily`](/docs/api-reference/billing/usage-daily) (daily timeseries, up to 90 days).
* **`Hirebase-Usage-*` response headers** on metered API responses — meter, included/used/remaining, and overage for the request you just made, CORS-exposed for browser clients. See [Usage Headers & Metering](/docs/api-reference/billing/usage-headers).
* Per-endpoint metering across six meters (jobs, vector, semantic, company, exports, insights). Search calls bill **per result returned**; job exports bill `min(limit, matches)` at task creation.
* At a plan cap: `429` with `X-Billing-Code: limit_exceeded` on hard-capped plans; metered-overage plans continue past included usage. Feature not in plan: `403` with `X-Billing-Code: feature_missing`.

### ⚙️ Limits & Behavior

* Rate limits: **100 requests / 60 s per API key** (25/60 s unauthenticated); `429` responses include `Retry-After` and `X-RateLimit-*` headers.
* Search `limit` maximum raised to **100** results per page.
* Salary filter fixes: results respect the requested salary range.
* Guest (unauthenticated) export checkout is discontinued; `POST /v2/jobs/public/export` now requires authentication.

***

## v2.3.0 — April 2026

Quality-of-life release focused on richer job metadata, better filter ergonomics, and a free-tier developer experience.

### 🔓 Authentication

* **Free first page.** All search endpoints now return the first page of results without an API key. Page 2+ (and always-authed endpoints like Expired Jobs, Export Jobs, Resume Embed, Task Status) still require a key in the `x-api-key` header.

### 🧠 Richer Job Metadata

* New scoring fields on job objects (0–10 scale): `coolness_score`, `flexibility_score`, `compensation_value_score`, `benefits_score`, `impact_autonomy_score`, `prestige_score`, `growth_score`.
* `meta_completeness` boolean flag on job objects (not a score).
* New parsed fields: `experience_level`, `skills`, `technologies`, `benefits`, `education_level`, `team`, `language`, `contact_email`, `contact_phone`, `recruiter_agency`.
* `return_raw_description: "true"` now returns a `description_raw` field with the full original HTML from the ATS source.

### 🔍 Search API Enhancements

* `company_count` added to the response alongside `total_count` / `total_pages` for unique-company rollups.
* New filter parameters: `location_group`, `company_types`, `date_posted`, `month`, `currency`, `include_expired`, `include_no_salary`, `include_yoe`, `hide_seen_jobs`, `filter_incomplete_jobs`, `job_category`.
* `sort_by` now accepts `company` and `yoe` in addition to `relevance` / `date_posted` / `salary`.
* Request-side `experience` filter standardized to `Entry`, `Junior`, `Mid`, `Senior`, `Executive`. Response `experience_level` values remain longer-form (`Entry-Level`, `Mid-Level`, `Principal / Staff / Lead`, etc.).
* `job_types` replaces the previous `job_type` parameter (plural, array-valued).

### 🧩 Reference Data Endpoints

* `GET /v2/jobs/data/categories` — canonical list of job category tags.
* `GET /v2/jobs/data/industries` — canonical list of industries.
* `GET /v2/jobs/data/subindustries` — canonical list of subindustries.

### 📚 Docs

* Migrated configuration from `mint.json` to `docs.json`.
* Expanded response schemas and working cURL examples across endpoint pages. (OpenAPI spec at `/docs/api-reference/openapi.json` is not yet populated.)
* Added an Expired Jobs API reference page.

***

## v2.2.0

Location and keyword matching overhaul, plus new filter parameters to improve job filtering.

### 🔧 API & Developer Experience

* **Updated Endpoints:**
* `/v2/jobs/neural-search` for semantic search
* `/v2/jobs/search` for text search
* `/v2/jobs/export` for CSV/JSON export
* `v2/hirebase/companies/search` for Company Search

### Job Exports

* Job Exports have been made into a service which you can now track via your settings.
* Export data will last 30 days before deletion, see User Settings to view your exports.
* Job Exports is now available via API.

### 🔍 Job Search Enhancements

* **Location Filtering**: Geographic, text, and area-based matching via `geofilter_params`.
* **Hide Recruiter Agencies**: Removes recruiting-agency posts from the search and export feeds via `hide_recruiting_agencies`.
* **Company filtering**: Filter for company-specific data using `company_keywords` such as goods and services.

### 📚 Docs & Guides

* Multi-language code examples.
* Guides for search, subscriptions, and integration.

***

**Note:** Please report any issues directly to [**spencer@hirebase.org**](mailto:spencer@hirebase.org). We release bug-fix updates based on severity.

For full documentation and support, visit the [Hirebase API docs](/docs/).
