Changelog
API versions, breaking changes, and new features.
We version the UpHunt API under /api/auto-apply-v2/ and document every user-visible change here. Breaking changes are announced 60 days in advance via email to every account with an active API key.
2026-08 - Five new feed pre-filters
POST /api/v1/feedsandPATCH /api/v1/feeds/:feedIdaccept five new filters:jobTypes,usOnlyMode,paymentVerifiedOnly,clientMinRating, andclientMinReviews. See Feeds for the field reference.- All five are Upwork-only and all default to off, so existing feeds match exactly what they matched before. LinkedIn and web jobs are never rejected by them.
usOnlyModefilters on the job's required talent location, which is a different thing from the client's country incountryFilterMode. Its"include"mode also drops jobs whose restriction Upwork does not publish.clientMinRatingtreats a client with no reviews as unrated and excludes them, which makes it aggressive: a 4.8 floor passes roughly 46% of Upwork jobs. UseclientMinReviewswhen you want to require a track record rather than just a high score.- Backward compatible: no existing field changed meaning and no response shape changed.
2026-06 — Freelancers list moves into the v2 family
- The "list freelancers" endpoint is now
GET /api/auto-apply-v2/freelancers, alongside the other auto-apply-v2 endpoints. It acceptsx-api-keyor an in-app session. - Backward compatible: the old
GET /api/auto-apply/external/freelancerspath still works — it forwards to the same handler.
2026-06 — Data reads use x-api-key, no version prefix
GET /api/jobs/by-ciphertext?cipher=~02...andGET /api/clients/:companyId/jobs— the archived-job and client-history reads, authenticated with the standardx-api-keyheader (or an in-app session).- The old
/api/v1/*"Data API" Bearer (up_) key system is retired. Use yourx-api-keyinstead ofAuthorization: Bearer. - Backward compatible: the
/api/v1/*and/api/v2/*paths still resolve — they forward to the unversioned endpoints and behave identically. No client changes required beyond the auth header. - The old v1 shared 10,000/billing-period quota is retired; the reads aren't separately metered.
2025-11 — Documentation rewrite
- Full docs moved to Fumadocs with sidebar, search, and syntax highlighting.
- Added Rate Limits, SDKs, and Recipes.
- Machine-readable
openapi.jsonkept in sync with the docs.
2025-09 — v2 endpoint generally available
- New
POST /api/auto-apply-v2/applyaccepts job URL, ciphertext, or processed UUID asjobId. No more feed setup required. - New
POST /api/auto-apply-v2/generate-proposal— AI-written cover letters on demand. applicationOptionsrenamed toproposalfor clarity.- Legacy
POST /api/auto-apply/externalremains supported.
2025-07 — Webhook delivery improvements
- Added
X-UpHunt-Deliveryheader with a unique ID per attempt (useful for idempotency). - Retries now use exponential backoff (30s, 2m, 10m) instead of a flat 5-minute delay.
- Duplicate events for the same
(jobId, jobListenerId)suppressed for 24 hours.
2025-05 — Status endpoint polish
- New terminal states:
not_enough_connects,logged_out. errorMessagenow includes a human-readable explanation for every failure.appliedAtandprocessedAtreported as Unix milliseconds consistently.
2025-01 — Agency profiles
- New
GET /api/auto-apply/external/freelancersendpoint lists agency-linked freelancers and their specialized profiles. /applynow accepts aprofileIdto route proposals to a specific freelancer / specialization.
Upgrading from legacy
See the Legacy Endpoint → Migrating to v2 table for field-by-field mappings.