Hello MCP.

AI compensation. With proof.

See the endpointsOpenAPI Spec

AI compensation. With proof. Six engines designed and two serving data, delivered as a JSON API + MCP. Compensation, skills, companies, hiring velocity, funding stage, skill half-life. 15M+ data points, structured total comp, company leveling frameworks, remote differentials, annual history, projections through 2030. Every response includes BLS SOC citations and a stable `data_point_id` resolvable via `/lineage`. Free to start, no card; Pro is $99/mo.

curl "https://www.orbytlabs.ai/api/v1/intelligence/salaries/calculate\
?role=ai-engineer&city=san-francisco&exp=senior"
Response200 OK
{
  "role": {
    "slug": "ai-engineer",
    "title": "AI Engineer"
  },
  "city": {
    "slug": "san-francisco",
    "name": "San Francisco",
    "state": "CA",
    "costOfLivingMultiplier": 1.35
  },
  "experience": {
    "level": "senior",
    "multiplier": 1.28
  },
  "estimate": {
    "low": 251000,
    "median": 298000,
    "high": 362000,
    "currency": "USD",
    "period": "annual"
  },
  "totalCompensation": {
    "base": 298000,
    "equity": 89000,
    "bonus": 35000,
    "signing": 10000,
    "total": 432000
  },
  "citation": "According to Orbyt Intelligence...",
  "assumptions": [
    "Base derived from national median adjusted by COL",
    "Experience level applies a 1.28x multiplier",
    "..."
  ]
}
Orby, the Orbyt Labs mascot

Cite it.

One API. Every compensation question.

AI Research

Foundation model labs, alignment teams

Cite compensation in papers. Train on methodology-first data. Verified Dataset schema indexed by Google and Perplexity.

HR Tech

Benchmark tools, ATS platforms

Embed live salary benchmarks. Stable API contracts. Annual data refresh cadence. Citation-ready responses.

Analysts

Newsrooms, financial research

Track tech sector comp for earnings analysis and reporting. Annual history reveals hiring cycles BLS misses.

Try it now.

Live data from the real API. Try the demo endpoint (the Demo tab, GET /api/v1/intelligence/salaries/demo), or create a free API key for full access.

Live demo

Find roles and cities by keyword. Public, no API key needed.

q
GEThttps://www.orbytlabs.ai/api/v1/intelligence/salaries/search?q=machine+learning+engineer
Response
Click Run → to fetch live data. Try the no-auth demo endpoint (GET /api/v1/intelligence/salaries/demo, the Demo tab above), or create a free API key for full API access.

Authentication.

All tiers require a Bearer token.
Create a free account to generate your API key. No card.

01

Start on the free tier

60 requests per minute and 1,000 a month, no card. Create an account and generate an API key in the dashboard. Try the no-auth demo endpoint first: GET /api/v1/intelligence/salaries/demo.

02

Move to Pro when you need more

Upgrade to Pro at $99/mo to unlock 300 req/min, 250,000 requests a month, the MCP server, and the /lineage provenance endpoint.

03

Add the token to your requests

Pass as Authorization: Bearer <token> in every request. Rate-limit headers tell you the rest.

04

Ship it

Every response is cite-ready. Attribution + methodology + assumptions baked into the JSON.

Rate limits.

All tiers use Bearer token auth.
Upgrade only when you need the headroom.

Price, rate limit, auth method, and included features for each Intelligence API tier.
TierPriceRate limitAuthFeatures
Free$060 req/minBearer token1,000 requests / monthAI Role Taxonomy, calculate, search, published BLS wage benchmarks
Pro$99/mo · $990/yr300 req/minBearer token250,000 requests / monthMCP server, lineage, restricted API keys, priority support
Ultra$199/mo · $1,999/yr1,500 req/minBearer token500,000 requests / monthCompany leveling catalog, annual reports, dedicated support

Every authenticated response returns X-RateLimit-Remaining and X-RateLimit-Tier headers. Use them for adaptive backoff. Public catalog endpoints are IP-rate-limited and do not carry per-tier headers.

Versioning.

Build on v1 without fear.

The Intelligence API uses explicit major versions in the URL path. You are reading the documentation for /api/v1/intelligence/salaries/.

Breaking changes will be released as /api/v2/ while v1 continues to receive annual data refreshes and bug fixes for at least 18 months after any v2 release.

Every change is published to the API Changelog. Subscribe once, build forever.

Intelligence API.

CORS enabled. Public endpoints are edge-cached; authenticated responses are computed per request. Attribution in every response. See the full data catalog.

Salary Data

GET/api/v1/intelligence/salariesCurrent salary data with remote, skills, education, freelance, and industry breakdowns
GET/api/v1/intelligence/salaries/calculatePersonalized estimate with experience adjustment
GET/api/v1/intelligence/salaries/historyQuarterly snapshots of the computed estimate, since Q2 2026
GET/api/v1/intelligence/salaries/projectionsYear-by-year forecasts through 2030

Analysis

GET/api/v1/intelligence/salaries/compareCompare two roles side-by-side with premium and leverage
GET/api/v1/intelligence/salaries/skillsSkills that increase pay, ranked by premium
GET/api/v1/intelligence/salaries/adjacentNearest roles by salary for career transition planning
GET/api/v1/intelligence/salaries/employer-costTotal cost to employer including taxes, benefits, and overhead

Companies

GET/api/v1/intelligence/salaries/companies54 companies with leveling frameworks, comp per level, equity vesting, interview difficulty

Directory

GET/api/v1/intelligence/salaries/rolesList all 3445 available roles
GET/api/v1/intelligence/salaries/citiesList all 81 U.S. cities
GET/api/v1/intelligence/salaries/searchSearch roles and cities by keyword

Tools

POST/api/v1/intelligence/salaries/compare-offersCompare 2-5 job offers side-by-side with after-tax, COL-adjusted ranking, and insights
POST/api/v1/intelligence/salaries/negotiateAI-powered negotiation script: counter-offer, talking points, email + phone scripts. Pro+ tier

Submissions

POST/api/v1/intelligence/salaries/submitSubmit anonymous salary data. 3 submissions per day per user. Feeds the community dataset
GET/api/v1/intelligence/salaries/crowdAggregated community-reported salary data. Data flywheel: requires 1 own submission first

Provenance

GET/api/v1/intelligence/lineage/[data_point_id]source trail for any data point. Sources, fetch timestamps, weights, reconciliation rule. Pro+ tier with intelligence:lineage scope

MCP.

One server. Six locked tools. Any AI client.

Same API key. Pro plan and above. Decision-Ready Responses per RFC-004.

Full MCP integration guide

MCP

POST/api/v1/intelligence/mcpJSON-RPC 2.0 endpoint. 6 tools: list_capabilities, analyze_compensation, analyze_skills, analyze_market, discover_roles_and_cities, find_adjacent_opportunities. Decision-Ready responses with citation.request_id traceability.
GET/api/mcp/intelligence/salaryLegacy REST MCP: salary estimate with full comp breakdown
GET/api/mcp/intelligence/rolesLegacy REST MCP: search or list available roles
GET/api/mcp/intelligence/compareLegacy REST MCP: side-by-side role or city comparison
GET/api/mcp/intelligence/rangeLegacy REST MCP: percentile distribution (P10-P90)
GET/api/mcp/intelligence/trendsLegacy REST MCP: annual historical salary trends

Error reference

Every error returns a consistent JSON envelope with an error message.

400A required query parameter is missing or invalid (e.g., missing role, unknown exp level). The envelope names the offending param and how to fix it.
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_missing",
    "param": "role",
    "message": "The `role` query parameter is required.",
    "doc_url": "https://www.orbytlabs.ai/intelligence/api/errors/parameter_missing",
    "request_id": "req_11b2385b7fc30468",
    "retry_strategy": "retry_with_clarification",
    "retry_hint": { "clarification_needed": "Pass ?role=<slug>" },
    "follow_up_suggestions": [
      "Use /api/v1/intelligence/salaries/roles to list available role slugs",
      "Use /api/v1/intelligence/salaries/search?q=<term> to discover canonical slugs"
    ]
  }
}
401Missing or invalid Bearer token. Every endpoint except the public catalog (/search, /roles, /cities) and /demo requires Authorization: Bearer intelligence_...
{
  "error": {
    "type": "authentication_error",
    "code": "authentication_required",
    "message": "All Intelligence API requests require a Bearer token. Pass `Authorization: Bearer intelligence_…`.",
    "doc_url": "https://www.orbytlabs.ai/intelligence/api/errors/authentication_required",
    "request_id": "req_2f4c9a01d3b75e88",
    "retry_strategy": "retry_with_clarification",
    "retry_hint": { "clarification_needed": "Add Authorization: Bearer intelligence_… header" }
  }
}
404The role or city slug was not found in the Orbyt Intelligence catalog. Use /api/v1/intelligence/salaries/search to resolve natural-language references.
{
  "error": {
    "type": "not_found_error",
    "code": "role_not_found",
    "param": "role",
    "message": "Role 'fake-role' was not found in the canonical taxonomy.",
    "doc_url": "https://www.orbytlabs.ai/intelligence/api/errors/role_not_found",
    "request_id": "req_8a31c0de52f6b974",
    "retry_strategy": "use_alternative_tool",
    "retry_hint": { "alternative_tool": "/api/v1/intelligence/salaries/search" },
    "follow_up_suggestions": [
      "Use /api/v1/intelligence/salaries/search?q=fake-role to find similar role slugs"
    ]
  }
}
429Rate limit exceeded. Free 60/min, Pro 300/min, Ultra 1,500/min. Check X-RateLimit-Remaining header.
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Tier rate limit exceeded. Wait for the cool-down window or upgrade your subscription tier.",
    "doc_url": "https://www.orbytlabs.ai/intelligence/api/errors/rate_limit_exceeded",
    "request_id": "req_5e7d20c4a9f1b386",
    "retry_strategy": "retry_after_seconds",
    "retry_hint": { "after_seconds": 60 },
    "follow_up_suggestions": [
      "Upgrade to Pro for 300 req/min",
      "Upgrade to Ultra for 1,500 req/min"
    ]
  }
}

Every response is cite-ready.

Every Intelligence API response ships with a self-attributing
attribution object. The citation travels with the data.

  • Source
    Entity name, ready to paste into paper footnotes or UI credits.
  • Methodology URL
    Direct link to the published methodology page. Reviewers can audit.
  • Updated
    ISO date of the quarter the data represents. Never stale without saying so.
  • No extra call
    Attribution ships with the data, not as a separate fetch. Zero overhead.
Response.attribution
{
  "data": {
    "role": { "id": "role:ai-engineer", "slug": "ai-engineer", "title": "AI Engineer" },
    "estimate": { "median": 232000, "currency": "USD", "period": "annual" }
  },
  "attribution": {
    "source": "Orbyt Intelligence",
    "url": "https://www.orbytlabs.ai/intelligence",
    "methodology": "https://www.orbytlabs.ai/orbyt-intelligence/methodology",
    "methodology_version": "2026.2",
    "updated": "2026-06-12",
    "version": "v1",
    "as_of": "2026-06-12"
  },
  "request": { "id": "req_aaaabbbbccccdddd", "endpoint": "/api/v1/intelligence/salaries/calculate", "duration_ms": 14, "tier": "free", "scopes": ["intelligence:read"] }
}
CORS
Enabled for all origins.
Call the API directly from browser code. No backend proxy required.
Caching
Edge-cached public endpoints.
Public catalog endpoints (/demo, /search, /roles, /cities) are served from the CDN; Bearer-authenticated responses are computed per request and bypass the edge cache. Standard HTTP headers respected.
Transport
HTTPS only, HTTP/2.
TLS 1.2 or later everywhere. JSON responses, UTF-8, gzip and brotli compression.

Quickstarts.

Three common patterns. Copy, paste, ship.

01

Offer fairness badge

Show a fairness label next to any offer with a one-line citation.

# Get the personalized estimate, then compare against the user's offer
curl "https://www.orbytlabs.ai/api/v1/intelligence/salaries/calculate?role=ai-engineer&city=san-francisco&exp=senior" \
  -H "Authorization: Bearer $ORBYT_API_KEY"
02

Annual trend chart

Pull history into any charting library. Show the delta badge from the response.

# Fetch 4 quarters of history for a role and city
curl "https://www.orbytlabs.ai/api/v1/intelligence/salaries/history?role=ai-engineer&city=san-francisco" \
  -H "Authorization: Bearer $ORBYT_API_KEY"
03

Fuzzy role resolver

User types a natural-language role. Resolve to a valid slug, then query.

# Step 1: Resolve the natural-language query to a role slug (search is public)
curl "https://www.orbytlabs.ai/api/v1/intelligence/salaries/search?q=machine+learning+engineer"

# Step 2: Use the resolved slug (e.g. "machine-learning-engineer") in the authenticated calculate call
curl "https://www.orbytlabs.ai/api/v1/intelligence/salaries/calculate?role=machine-learning-engineer&city=san-francisco&exp=senior" \
  -H "Authorization: Bearer $ORBYT_API_KEY"

Machine-readable.

OpenAPI 3.1. MCP manifest. Drop into any LLM or agent.

Deeper docs.

The reference above is the API surface. The deep-dives below cover every engine, the MCP server, the CLI, and the webhook event catalog.

Back to the product page

Orbyt Intelligence