Changelog
Additive changes may land at any time; a breaking change would go to /api/v2/ and be emailed to every key holder first. See Versioning and stability.
Reserved
Section titled “Reserved”Documented so you can plan for them; none is live.
| Item | Status |
|---|---|
429 rate_limited and rate-limit headers |
Reserved. No rate limiting today. |
sl_test_ keys for test-mode businesses |
Reserved. |
410 Gone with the new location for a job slug the business changed |
Reserved. A changed slug answers 404 job_not_found today. |
message and details keys on the error body |
Planned, additive. The body is { "error": "…" } today. |
| Self-serve API keys and webhook endpoints in Settings → Integrations | Planned. Keys and endpoints are issued by support today. |
job.deleted |
Defined, never sent; jobs archive as job.unpublished. |
2026-09-18 — Closed businesses answer 410
Section titled “2026-09-18 — Closed businesses answer 410”- A business whose account is closed answers
410 business_closedto its own key. Any other caller gets404 business_not_found. Error responses now carryCache-Control: no-store, max-age=0.
2026-09-12 — industry_label on Business
Section titled “2026-09-12 — industry_label on Business”- Additive. The business’s own words for a trade not on our list;
nullfor every listed trade. Renderindustry_label ?? primary_vertical.
2026-08-31 — Repeat visits, reviews on lists, and richer webhooks
Section titled “2026-08-31 — Repeat visits, reviews on lists, and richer webhooks”- Additive on
Job:canonical_slug,gallery_order,work_duration_minutes,source_line_items,what_we_found,what_we_did,judgment_calls,what_we_recommend. noindexcan now be set automatically for a later visit to a property that already has a page for the same service, in addition to the per-job toggle.GET /jobsgainsreviews=trueto embed matched reviews on list rows.- Webhook payloads gain
job.sibling_slugsandjob.sibling_categories, present only when non-empty.
2026-08-18 — Stale marker
Section titled “2026-08-18 — Stale marker”- Additive. A response partly served from our last good copy during a temporary problem carries
X-SL-Stale-Msand a 30-secondCache-Control. See Caching.
2026-06-11 — public_face on Business
Section titled “2026-06-11 — public_face on Business”- Additive. The named author shown on pages:
name,title,bio,sameAs.nulluntil set.
2026-06-09 — Reviews
Section titled “2026-06-09 — Reviews”- Additive.
Job.reviews[]: Google reviews matched to the job, always present on Get a job.
2026-06-03 — Build-time feed
Section titled “2026-06-03 — Build-time feed”- New endpoint
GET /api/businesses/{slug}/feed/jobswithservice,cityandfields=minimal. Ordered byupdated_at; page size 1–200, default 50; carries a publicCache-Control.
2026-05-24 — Aggregates and sitemap filtering
Section titled “2026-05-24 — Aggregates and sitemap filtering”GET /jobsandGET /jobs/{job_slug}responses gainaggregates(counts across all published jobs;nullwhen unavailable).GET /jobsgainsindexable=trueandaggregates=false.
2026-05-22 — Booking CTA
Section titled “2026-05-22 — Booking CTA”- Additive on
Business:booking_url,cta_kind,cta_label.
2026-05-18 — Premium pages
Section titled “2026-05-18 — Premium pages”og_image_url,related_jobs,project_factsandmedia[].pair_idare now populated (previously present but empty).- Additive on
Business:branding,license_number,cities_served.
2026-05-13 — Keys, cursors, noindex
Section titled “2026-05-13 — Keys, cursors, noindex”- Bearer
sl_live_keys are required on every endpoint. GET /jobsgains cursor pagination andupdated_since.- Additive on
Job:noindex.
2026-05-08 — Webhooks
Section titled “2026-05-08 — Webhooks”- Outbound webhooks:
job.published,job.updated,job.unpublished, HMAC-SHA256 signatures, retries, circuit breaker.
2026-04-25 — v1
Section titled “2026-04-25 — v1”GET /api/businesses/{slug},GET /api/businesses/{slug}/jobs,GET /api/businesses/{slug}/jobs/{job_slug}withETag/If-None-Match.