AI Resilience API & MCP

API v1.0

Free, public API for AI career resilience data. No API key required. Rate limited to 100 requests per minute per IP.

Full Dataset Download

Bulk CSV export of the latest quarterly snapshot — all scored occupations, sub-scores, and per-source values. Licensed under CC BY 4.0.

1,597 careers · Snapshot: 2026-05-19

API Playground

/ext/api/career/

This API uses 2019 SOC codes. You can look up codes at bls.gov/soc.

Resilience scores are generated by the AI Resilience Model v1.5 (returned as data.airm.version). See the Changelog for version history.

Single-Career Endpoint

GET https://www.airesilience.org/ext/api/career/{code}

Path Parameter

ParameterTypeDescription
codestringSOC code in format XX-XXXX or XX-XXXX.XX

Response Format

Success (200)

Fields are grouped by concern. All numeric scores are on a 0-1 scale unless otherwise noted. Any field can be null when the underlying data is unavailable for that occupation.

Core

FieldTypeDescription
data.codestringSOC code
data.namestringCareer name
data.nameShortstringShort display name
data.slugstringURL slug used on airesilience.org
data.levelstringSOC hierarchy level: "major", "minor", "broad", or "detailed"
data.descriptionstringPlain-text occupation description
data.urlstringLink to the full career report page
data.lastUpdatedstringDate (YYYY-MM-DD) of the latest data snapshot

aiResilience

FieldTypeDescription
data.aiResilience.scorenumberCombined AI resilience score (0-1, higher = more resilient)
data.aiResilience.labelstringOne of: "Highly Resilient" (80.1-100%), "Resilient" (65.1-80%), "Mostly Resilient" (50.1-65%), "Somewhat Resilient" (35.1-50%), "Not Very Resilient" (22.1-35%), or "Vulnerable" (0-22%)
data.aiResilience.confidencestringConfidence level (High, Medium-high, Medium, Low-medium, Low)
data.aiResilience.explanationstringHuman-readable explanation of the resilience label

airm (AI Resilience Model)

FieldTypeDescription
data.airm.versionstringAI Resilience Model version (e.g., "v1.5"). See the Changelog for version history.
data.airm.percentilenumberCareerVillage internal model percentile (0-1)
data.airm.labelstring"High", "Medium", or "Low"
data.airm.rawScorenumberRaw weighted percentile from the CV model

sources

Per-source signals that feed the combined resilience score. Percentiles are 0-1 within their respective populations.

FieldTypeDescription
data.sources.anthropicobjectAnthropic Economic Index: percentile, rawScore
data.sources.microsoftobjectMicrosoft AI Applicability: percentile, rawScore
data.sources.wrtmjobjectWill Robots Take My Job: percentile, label, riskPercent, growth, volume
data.sources.althoffobjectAlthoff wage-bill exposure: wageBillPercentile
data.sources.manningobjectManning adaptive capacity: adaptiveCapacityPercentile
data.sources.blsOpportunityobjectBLS opportunity: score, label

subscores

FieldTypeDescription
data.subscores.meaningfulHumanContributionobjectscore (0-1), label (High/Medium/Low)
data.subscores.sustainedEconomicOpportunityobjectscore (0-1), label (High/Medium/Low)

stepsToTake

FieldTypeDescription
data.stepsToTakestring[]AI-generated suggested actions for students. Empty array when not available.

tasks

Populated for detailed occupations only. Sorted by automationLikelihood ascending (most resilient first).

FieldTypeDescription
data.tasks[].idstringO*NET task ID
data.tasks[].taskstringTask description
data.tasks[].taskTypestring"Core" or "Supplemental"
data.tasks[].automationLikelihoodnumber0-1; lower = more resilient
data.tasks[].resilienceScorenumberConvenience: 1 − automationLikelihood
data.tasks[].analysisDatestringDate the automation estimate was generated (ISO 8601)

laborMarket

BLS employment and wage data. Employment counts are absolute (not in thousands).

FieldTypeDescription
data.laborMarket.medianWagenumber | stringAnnual median wage in USD (string for capped ">= $239,200" values)
data.laborMarket.employment2024numberTotal jobs in 2024
data.laborMarket.employment2034numberProjected total jobs in 2034
data.laborMarket.employmentChangePctnumberProjected % change in employment 2024-2034
data.laborMarket.annualOpeningsnumberProjected average annual openings
data.laborMarket.educationRequiredstringTypical entry-level education
data.laborMarket.experienceRequiredstringRequired work experience
data.laborMarket.trainingRequiredstringOn-the-job training requirements
data.laborMarket.dataSourcestring"direct", "mapped_via_crosswalk", "aggregated_from_children", or "inherited_from_parent"

hierarchy

SOC hierarchy relationships. Each reference is a minimal {code, name, slug, url} object.

FieldTypeDescription
data.hierarchy.parents.majorobjectSOC Major Group parent
data.hierarchy.parents.minorobjectSOC Minor Group parent
data.hierarchy.parents.broadobjectSOC Broad Occupation parent
data.hierarchy.siblingsobject[]Related careers sharing the same parent and level
data.hierarchy.childrenobject[]Direct children. Empty for detailed-level occupations.

Example Response

{
  "success": true,
  "data": {
    "code": "15-1252.00",
    "name": "Software Developers",
    "nameShort": "Software Developers",
    "slug": "software-developers",
    "level": "detailed",
    "description": "Develop, create, and modify general computer applications software...",
    "url": "https://www.airesilience.org/career/software-developers",
    "aiResilience": {
      "score": 0.62,
      "label": "Mostly Resilient",
      "confidence": "High",
      "explanation": "Software developers..."
    },
    "airm": {
      "version": "v1.5",
      "percentile": 0.45,
      "label": "Medium",
      "rawScore": 0.52
    },
    "sources": {
      "anthropic":      { "percentile": 0.42, "rawScore": 0.18 },
      "microsoft":      { "percentile": 0.38, "rawScore": 0.45 },
      "wrtmj":          { "percentile": 0.55, "label": "Medium", "riskPercent": "65", "growth": "...", "volume": "..." },
      "althoff":        { "wageBillPercentile": 0.61 },
      "manning":        { "adaptiveCapacityPercentile": 0.58 },
      "blsOpportunity": { "score": 0.7, "label": "High" }
    },
    "subscores": {
      "meaningfulHumanContribution":  { "score": 0.65, "label": "High" },
      "sustainedEconomicOpportunity": { "score": 0.70, "label": "High" }
    },
    "stepsToTake": [
      "Build a portfolio of projects that show end-to-end problem solving...",
      "Develop fluency with AI-assisted coding tools..."
    ],
    "tasks": [
      {
        "id": "1",
        "task": "Confer with systems analysts, engineers, programmers and others...",
        "taskType": "Core",
        "automationLikelihood": 0.18,
        "resilienceScore": 0.82,
        "analysisDate": "2026-05-16"
      }
    ],
    "laborMarket": {
      "medianWage": 130160,
      "employment2024": 1656000,
      "employment2034": 1800000,
      "employmentChangePct": 8.7,
      "annualOpenings": 140100,
      "educationRequired": "Bachelor's degree",
      "experienceRequired": "None",
      "trainingRequired": "None",
      "dataSource": "direct"
    },
    "hierarchy": {
      "parents": {
        "major": { "code": "15-0000", "name": "Computer and Mathematical Occupations", "slug": "computer-and-mathematical-occupations", "url": "https://www.airesilience.org/career/computer-and-mathematical-occupations" },
        "minor": { "code": "15-1200", "name": "Computer Occupations", "slug": "computer-occupations", "url": "https://www.airesilience.org/career/computer-occupations" },
        "broad": { "code": "15-1250", "name": "Software and Web Developers, Programmers, and Testers", "slug": "software-and-web-developers-programmers-and-testers", "url": "https://www.airesilience.org/career/software-and-web-developers-programmers-and-testers" }
      },
      "siblings": [
        { "code": "15-1253.00", "name": "Software Quality Assurance Analysts and Testers", "slug": "software-quality-assurance-analysts-and-testers", "url": "https://www.airesilience.org/career/software-quality-assurance-analysts-and-testers" }
      ],
      "children": []
    },
    "lastUpdated": "2026-05-16"
  }
}

Bulk (List) Endpoint

Returns a summary list of all occupations. Useful for syncing the dataset or building filtered views client-side. Each entry is a compact summary (resilience score, label, confidence) — for the full per-occupation payload, call the single-career endpoint with the SOC code.

GET https://www.airesilience.org/ext/api/careers

Query Parameters

All parameters are optional. When neither page nor pageSize is supplied, the endpoint returns the full unpaginated list.

ParameterTypeDescription
pageinteger1-indexed page number. Triggers paginated response.
pageSizeintegerItems per page. Default 100, max 500. Triggers paginated response.
levelstringFilter by SOC hierarchy level: major, minor, broad, detailed.
labelstringFilter by resilience label. One of the 6 labels (URL-encode spaces): "Highly Resilient", "Resilient", "Mostly Resilient", "Somewhat Resilient", "Not Very Resilient", "Vulnerable".

Response Fields

FieldTypeDescription
data[]object[]Array of career summaries, sorted by SOC code ascending
data[].codestringSOC code
data[].namestringCareer name
data[].slugstringURL slug
data[].levelstringSOC hierarchy level
data[].urlstringLink to the career report page
data[].aiResilience.scorenumberCombined AI resilience score (0-1, higher = more resilient)
data[].aiResilience.labelstringOne of the 6 resilience labels
data[].aiResilience.confidencestringConfidence level
meta.totalnumberTotal matching careers after filters
meta.lastUpdatedstringDate (YYYY-MM-DD) of the latest data snapshot
meta.pagenumberPaginated responses only
meta.pageSizenumberPaginated responses only
meta.totalPagesnumberPaginated responses only
meta.hasMorebooleanPaginated responses only. True if more pages exist.

Example Response (paginated)

GET /ext/api/careers?level=detailed&page=1&pageSize=2

{
  "success": true,
  "data": [
    {
      "code": "11-1011.00",
      "name": "Chief Executives",
      "slug": "chief-executives",
      "level": "detailed",
      "url": "https://www.airesilience.org/career/chief-executives",
      "aiResilience": {
        "score": 0.78,
        "label": "Resilient",
        "confidence": "High"
      }
    },
    {
      "code": "11-1021.00",
      "name": "General and Operations Managers",
      "slug": "general-and-operations-managers",
      "level": "detailed",
      "url": "https://www.airesilience.org/career/general-and-operations-managers",
      "aiResilience": {
        "score": 0.61,
        "label": "Mostly Resilient",
        "confidence": "Medium-high"
      }
    }
  ],
  "meta": {
    "total": 867,
    "page": 1,
    "pageSize": 2,
    "totalPages": 434,
    "hasMore": true,
    "lastUpdated": "2026-05-16"
  }
}

Error Responses

StatusCodeDescription
400INVALID_SOC_CODESOC code doesn't match expected format
400INVALID_LEVELBulk endpoint: level must be one of major, minor, broad, detailed
400INVALID_LABELBulk endpoint: label must be one of the 6 resilience labels
400INVALID_PAGEBulk endpoint: page must be a positive integer (1-indexed)
400INVALID_PAGE_SIZEBulk endpoint: pageSize must be between 1 and 500
404CAREER_NOT_FOUNDNo career exists for the given SOC code
429RATE_LIMITEDExceeded 100 requests/minute. Includes Retry-After header.

Rate Limiting

The API is rate limited to 100 requests per minute per IP address using a sliding window. If you hit the limit, you'll receive a 429 response with a Retry-After header indicating how many seconds to wait.

CORS

This API supports cross-origin requests from any domain. You can call it directly from browser-based applications without a proxy.

MCP Server for AI Assistants

We provide a Model Context Protocol (MCP) server that wraps this API, allowing AI assistants like Claude to look up career resilience data directly. No API key required.

Install via npm: ai-resilience-mcp

Configuration

Add the following to your MCP client configuration:

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ai-resilience": {
      "command": "npx",
      "args": ["-y", "ai-resilience-mcp"]
    }
  }
}

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "ai-resilience": {
      "command": "npx",
      "args": ["-y", "ai-resilience-mcp"]
    }
  }
}

Available Tool

ToolInputDescription
lookup_careerlookup_careercode (SOC code)Returns the full career payload: AI resilience score, label, confidence, explanation, AIRM data (airm), per-source signals, subscores, suggested actions, task-level resilience, labor market data, and hierarchy

Changelog

Notable changes to the API. Breaking changes are called out explicitly.

2026-05-26

bulk endpoint

Added a new bulk (list) endpoint: GET /ext/api/careers. Returns summary entries (code, name, slug, level, url, resilience score/label/confidence) for all occupations.

  • Optional filters: ?level= and ?label=.
  • Optional pagination: ?page=N&pageSize=N (default 100, max 500). When neither is supplied, returns the full unpaginated list.
  • New 400 error codes: INVALID_LEVEL, INVALID_LABEL, INVALID_PAGE, INVALID_PAGE_SIZE.

2026-05-26

API v1.0

Formally declared the REST API contract version as v1.0. This is distinct from the AI Resilience Model version (data.airm.version), which remains at v1.5.

  • Added an X-API-Version response header on all responses so clients can detect the contract version without parsing the body.
  • Breaking changes to the REST contract will bump the major version (v2.0, v3.0, etc.); additive changes will bump the minor.

2026-05-26

expanded response

Significantly expanded the response with additional data exposed from the site. All previously-existing fields are unchanged.

  • Added data.sources with per-source signals (Anthropic, Microsoft, WRTMJ, Althoff, Manning, BLS opportunity).
  • Added data.subscores (meaningful human contribution, sustained economic opportunity).
  • Added data.stepsToTake — AI-generated suggested actions for students.
  • Added data.tasks with task-level automation likelihood / resilience scores (detailed occupations only).
  • Added data.laborMarket with BLS employment, wage, education, and experience data.
  • Added data.hierarchy (parents, siblings, children) for navigating the SOC tree.
  • Added data.lastUpdated, data.nameShort, data.slug, data.level, and data.description.

2026-05-26

airm v1.5
  • Breaking: Renamed data.cvModel to data.airm in the response.
  • Added data.airm.version field reporting the AI Resilience Model version.

Questions? Contact us at air@careervillage.org.

Share your feedback

The AI Resilience Report is a project from CareerVillage.org®, a registered 501(c)(3) nonprofit.

Built with ❤️ by Sandbox Web

The AI Resilience Report is governed by CareerVillage.org’s Privacy Policy and Terms of Service. This site is not affiliated with Anthropic, Microsoft, or any other data provider and doesn't necessarily represent their viewpoints. This site is being actively updated, and may sometimes contain errors or require improvement in wording or data. To report an error or request a change, please contact air@careervillage.org.