GET/v1/career/transitions/{soc_code}

Find realistic career transitions from a given occupation (skill-overlap ranked)

Return occupations that are most similar to a given source occupation based on shared O*NET skills, knowledge, and abilities. Results are ranked by similarity score descending and each row carries the number of shared skills plus the expected wage change when switching roles. **When to use:** answer 'what jobs can a nurse realistically move into?' or power a 'people who left this job moved to...' widget. Adjust `min_similarity` to control how closely related results must be — 0.3 is a reasonable default, 0.5+ returns only very close matches. **Inputs:** - `soc_code` — the source occupation SOC code (path parameter). - `limit` (1-50) — how many transitions to return. - `min_similarity` (0.0-1.0) — minimum skill overlap score. **Response shape:** `ApiResponse[list[CareerTransitionSchema]]` with `from_soc`, `from_title`, `to_soc`, `to_title`, `similarity_score`, `shared_skills_count`, and optional `wage_change_pct`. Source: O*NET OnLine (USDOL/ETA). Required scope: `skills:read`.

Authentication

Requires API key via X-API-Key header.

Parameters

NameInTypeRequiredDescription
soc_codepathstringrequired
limitqueryintegeroptionalMaximum number of transitions to return
min_similarityquerynumberoptionalMinimum similarity score threshold

Example request

curl
curl -X GET \
  "https://skills.wageapi.com/api/v1/career/transitions/%3Csoc_code%3E?limit=20&min_similarity=0.3" \
  -H "X-API-Key: YOUR_API_KEY"

Responses

200Successful Response
dataarray<CareerTransitionSchema>required
array of CareerTransitionSchema
from_socstringrequired

Source occupation SOC code

from_titlestringrequired

Source occupation title

to_socstringrequired

Target occupation SOC code

to_titlestringrequired

Target occupation title

similarity_scorenumberrequired

Skill-based similarity (0.0-1.0)

min 0 · max 1

shared_skills_countintegerrequired

Number of skills shared between occupations

wage_change_pctanyoptional

Median wage change percentage

one of:
option 1:
number
option 2:
null
metadataMetadataSchemarequired
sourcesarray<SourceSchema>optional
array of SourceSchema
namestringrequired

Data source name (e.g. O*NET, BLS OES)

urlanyoptional

URL to the source

one of:
option 1:
string
option 2:
null
request_idstringrequired

Unique request identifier

rate_limitanyoptional
one of:
option 1:
limitintegerrequired

Maximum requests per day for current tier

remainingintegerrequired

Requests remaining today

resetstringrequired

UTC timestamp when limit resets

option 2:
null
401Missing or invalid API key.
errorErrorDetailrequired

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

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusanyoptional

HTTP status code

one of:
option 1:
integer
option 2:
null
request_idanyoptional

Request identifier — include in support tickets

one of:
option 1:
string
option 2:
null
suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
403API key lacks the required scope for this endpoint.
errorErrorDetailrequired

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

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusanyoptional

HTTP status code

one of:
option 1:
integer
option 2:
null
request_idanyoptional

Request identifier — include in support tickets

one of:
option 1:
string
option 2:
null
suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
404The source SOC code does not exist in the loaded O*NET taxonomy.
errorErrorDetailrequired

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

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusanyoptional

HTTP status code

one of:
option 1:
integer
option 2:
null
request_idanyoptional

Request identifier — include in support tickets

one of:
option 1:
string
option 2:
null
suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
422Request validation failed (bad query params, unknown category, etc.).
errorErrorDetailrequired

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

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusanyoptional

HTTP status code

one of:
option 1:
integer
option 2:
null
request_idanyoptional

Request identifier — include in support tickets

one of:
option 1:
string
option 2:
null
suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
429Daily rate limit exceeded for this API key.
errorErrorDetailrequired

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

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusanyoptional

HTTP status code

one of:
option 1:
integer
option 2:
null
request_idanyoptional

Request identifier — include in support tickets

one of:
option 1:
string
option 2:
null
suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
500Unexpected server error. Includes a request_id for support.
errorErrorDetailrequired

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

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusanyoptional

HTTP status code

one of:
option 1:
integer
option 2:
null
request_idanyoptional

Request identifier — include in support tickets

one of:
option 1:
string
option 2:
null
suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null

Try this endpoint

Create a free Aethar account and generate an API key in 2 minutes.

Create free account →