/v1/occupations/{soc_code}Get the full profile for a single occupation (skills + tasks + wages + outlook)
Return a complete O*NET occupation profile in a single request, including the full skill list (with per-skill importance and proficiency level scores), task statements, national BLS wage data, and the latest BLS employment projection. Use this endpoint when a caller wants comprehensive information about one occupation — for example to render a job-profile page or feed an LLM context window in one shot. **Path parameter:** `soc_code` is the O*NET extended SOC code (e.g. `15-1252.00` for Software Developers, `29-1141.00` for Registered Nurses). **Response shape:** an `OccupationDetail` containing metadata (`title`, `description`, `job_zone`, `bright_outlook`, `green_occupation`), plus optional nested blocks for `skills`, `tasks`, `wages` (national figures only — use `GET /v1/occupations/{soc_code}/wages` for all areas), and `projection`. **Tip:** the heaviest queries join across skills / tasks / wages / projections. If the caller only needs one of those, prefer the dedicated sub-endpoint for a cheaper response. Source: O*NET OnLine, BLS OES, BLS Employment Projections. Required scope: `skills:read`.
Authentication
Requires API key via X-API-Key header.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| soc_code | path | string | required |
Example request
curl -X GET \
"https://skills.wageapi.com/api/v1/occupations/%3Csoc_code%3E" \
-H "X-API-Key: YOUR_API_KEY"Responses
dataOccupationDetailrequiredFull occupation profile with all available data.
soc_codestringrequiredStandard Occupational Classification code
titlestringrequiredOfficial occupation title
descriptionanyoptionalWhat workers in this occupation typically do
job_zoneanyoptionalPreparation level 1-5
bright_outlookbooleanoptionalProjected to grow much faster than average
default false
green_occupationbooleanoptionalRelated to green economy
default false
skillsanyoptionalSkills with importance/level scores
skill_idstringrequiredO*NET skill identifier
namestringrequiredSkill name
categorystringrequiredknowledge | skill | ability
importancenumberrequiredHow important this skill is (0.00-1.00)
min 0 · max 1
levelnumberrequiredRequired proficiency level (0.00-1.00)
min 0 · max 1
tasksanyoptionalTask statements
task_idstringrequiredO*NET task identifier
descriptionstringrequiredWhat the task involves
importanceanyoptionalNormalized importance score 0.00-1.00
wagesanyoptionalNational wage data
area_codestringrequiredBLS area code (e.g. 0000000 for national)
yearintegerrequiredData year
mediananyoptionalAnnual median wage in USD
meananyoptionalAnnual mean wage in USD
pct10anyoptional10th percentile annual wage in USD
pct25anyoptional25th percentile annual wage in USD
pct75anyoptional75th percentile annual wage in USD
pct90anyoptional90th percentile annual wage in USD
hourly_mediananyoptionalHourly median wage in USD
hourly_meananyoptionalHourly mean wage in USD
total_employmentanyoptionalTotal employment in area
projectionanyoptionalEmployment outlook
year_baseintegerrequiredBase year for projection
year_projectedintegerrequiredTarget projection year
employment_baseanyoptionalEmployment in base year (thousands)
employment_projectedanyoptionalProjected employment (thousands)
change_pctanyoptionalProjected percent change in employment
openings_annualanyoptionalProjected annual job openings (thousands)
outlookanyoptionalbright | average | declining
metadataMetadataSchemarequiredsourcesarray<SourceSchema>optionalnamestringrequiredData source name (e.g. O*NET, BLS OES)
urlanyoptionalURL to the source
request_idstringrequiredUnique request identifier
rate_limitanyoptionallimitintegerrequiredMaximum requests per day for current tier
remainingintegerrequiredRequests remaining today
resetstringrequiredUTC timestamp when limit resets
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusanyoptionalHTTP status code
request_idanyoptionalRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusanyoptionalHTTP status code
request_idanyoptionalRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusanyoptionalHTTP status code
request_idanyoptionalRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusanyoptionalHTTP status code
request_idanyoptionalRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusanyoptionalHTTP status code
request_idanyoptionalRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusanyoptionalHTTP status code
request_idanyoptionalRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
Try this endpoint
Create a free Aethar account and generate an API key in 2 minutes.
Create free account →