UpHunt API
Endpoints

Applied Jobs

Paginated list of jobs you have applied to.

GET
/api/auto-apply-v2/applied-jobs

List all job applications for your account with pagination and optional status filtering.

Query parameters

ParameterTypeDescription
limitnumber

Number of results per page. Default 50, max 200.

offsetnumber

Number of results to skip for pagination. Default 0.

statusstring

Filter by application status: applied, failed, processing, not_available, not_eligible, not_enough_connects. Returns all statuses if omitted.

Example

cURL
curl "https://uphunt.io/api/auto-apply-v2/applied-jobs?limit=10&status=applied" -H "x-api-key: YOUR_API_KEY"

Response

{
  "jobs": [
    {
      "jobId": "~01abc123def456",
      "processedJobId": "550e8400-e29b-41d4-a716-446655440000",
      "title": "React Developer needed",
      "url": "https://www.upwork.com/jobs/~01abc123def456",
      "platform": "upwork",
      "applicationStatus": "applied",
      "applicationStatusMessage": "Successfully applied via auto-apply",
      "matchingScore": 8,
      "queueId": "queue_abc123",
      "appliedAt": 1732204800000,
      "processedAt": 1732204790000,
      "errorMessage": null,
      "coverLetter": "Hi, I have 5+ years of experience with...",
      "createdAt": 1732204700000
    }
  ],
  "total": 142,
  "limit": 10,
  "offset": 0
}

Paginating through all jobs

Node.js
let offset = 0
const limit = 50
const allJobs = []
 
while (true) {
  const res = await fetch(
    `https://uphunt.io/api/auto-apply-v2/applied-jobs?limit=${limit}&offset=${offset}&status=applied`,
    { headers: { 'x-api-key': process.env.UPHUNT_API_KEY! } }
  )
  const data = await res.json()
  allJobs.push(...data.jobs)
 
  if (allJobs.length >= data.total) break
  offset += limit
}
 
console.log(`Total applied: ${allJobs.length}`)

On this page