Job detail
POST /flan.jobs.v1.JobsService/Get
Returns the full detail for a single job, including sanitized description, all locations, full source attribution, and active/expired status.
Request body
| Parameter | Type | Description |
| --------- | ---- | -------------------------------------------------- |
| id | uuid | The job identifier returned by JobsService.List. |
curl -X POST "https://api.useflan.app/flan.jobs.v1.JobsService/Get" \
-H "Content-Type: application/json" \
--data '{"id":"018f3b21-4b2c-7e3d-9a40-23e8a1f2b3c4"}'
{
"id": "018f3b21-4b2c-7e3d-9a40-23e8a1f2b3c4",
"slug": "senior-frontend-engineer-acme",
"title": "Senior Frontend Engineer",
"company": {
"name": "Acme",
"slug": "acme",
"domain": "acme.com",
"logoUrl": "https://logo.clearbit.com/acme.com"
},
"locations": [
{ "city": "Remote", "country": "US", "remote": true, "text": "Remote, US" }
],
"remote": true,
"employmentType": "full_time",
"seniority": "senior",
"occupation": "Software Engineer",
"salary": {
"min": 140000,
"max": 180000,
"currency": "USD",
"period": "year"
},
"description": "<p>We're looking for a...</p>",
"source": { "type": "ats", "platform": "greenhouse" },
"status": "active",
"discoveredAt": "2026-06-18T14:20:00Z",
"lastSeenAt": "2026-06-21T08:30:00Z",
"lastScrapedAt": "2026-06-21T08:30:00Z",
"lastVerifiedAt": "2026-06-21T08:30:00Z"
}
Response fields
| Field | Type | Description |
| ---------------- | -------------- | ----------------------------------------------------------------- |
| id | uuid | Job identifier. |
| slug | string | Canonical URL slug. |
| title | string | Job title. |
| company | object | { name, slug?, domain?, logoUrl? }. |
| locations | array | One or more { city?, region?, country?, text?, remote }. |
| remote | boolean | Whether the role accepts remote. |
| employmentType | enum | One of the five canonical types. |
| seniority | string | Seniority bucket. |
| occupation | string | Normalized occupation label, if known. |
| salary | object | null | { min, max, currency, period }. |
| description | string | HTML description (sanitized on the read path). |
| source | object | { type: "ats", platform: "greenhouse" }. |
| status | enum | active or expired. Derived from the latest verification pass. |
| discoveredAt | datetime | First crawled. |
| lastSeenAt | datetime | Last time the URL was reachable. |
| lastScrapedAt | datetime | Last time content was fetched. |
| lastVerifiedAt | datetime | Last active/expired verification. |
Status semantics
status is derived from a backend boolean (is_active):
active— the job URL was reachable and the listing was present in the most recent verification pass.expired— the URL returned 404, the posting was removed, or the page indicates the role is closed.
Expired jobs are retained for ~30 days so callers can detect removals and keep their caches clean.
Related endpoints
JobsService.GetSimilar— related jobs based on title, occupation, and seniority.POST /v1/reports— flag a job whose backend-derived status appears wrong.

