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-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.