Get Job
Fetch a single archived Upwork job by its ciphertext slug.
/api/jobs/by-ciphertextReturns the full archived RawUpworkJob document for one Upwork job, identified by its ciphertext slug (the ~02xxx... portion of an Upwork job URL).
The legacy /api/v1/jobs/:ciphertext and /api/v2/jobs/:ciphertext paths still work — they forward to this endpoint and behave identically (same x-api-key auth).
Authentication
This endpoint uses the same x-api-key header as the auto-apply endpoints — the key scoped to your UpHunt account. Generate it from Dashboard → Auto-Apply → API & Webhooks.
Query parameters
| Parameter | Type | Description |
|---|---|---|
cipher | stringrequired | Upwork job ciphertext, e.g. |
Example
Response
The full RawUpworkJob document is returned: top-level fields like title, description, ontologySkills[], jobTile.job.*, plus optional nested jobDetailsResponse (public details: budget, qualifications, buyer location/stats) and authJobDetailsResponse (auth-only enrichment: screening questions, attachments, buyer work history, applicant bid stats). When the auth-enriched scrape captured screening questions, they're also surfaced at the top level as screeningQuestions so you can pass position values directly to the apply endpoint's questionAnswers.
Errors
Our archive goes back several years, but very old or never-scraped jobs may not be present.
| Status | When |
|---|---|
| 400 | Missing cipher query parameter |
| 401 | x-api-key missing or invalid |
| 404 | Ciphertext doesn't match any archived job |
Related
- Get Client Jobs — lists every job from the same buyer.
- Authentication — generating your
x-api-key.