Mira API Documentation
The Mira API empowers developers with AI-driven talent intelligence. Search global candidate, job, and scholar datasets, grade CVs, look up entity details, and integrate with MCP-compatible assistants.
Overview
The Mira API provides a comprehensive set of endpoints for talent intelligence. All requests are authenticated using Bearer tokens (API keys that start with mira_).
The API supports both direct REST calls and the Model Context Protocol (MCP), enabling integration with AI assistants like Claude. Current API version: 2.1.0.
| Host | URL | Use |
|---|---|---|
| Production API | https://mira-api.openjobs-ai.com | REST and MCP calls |
| Platform dashboard | https://platform.openjobs-ai.com | Sign in, create API keys, manage usage and quota |
2.1.0 uses an ID-first search model: people and job search endpoints return string type IDs, then clients fetch full documents through /entity/v1/... detail endpoints. Omit country filters to search the global dataset.Latest Version Summary
Current version: 2.1.0. Previous documented version: 2.0.1. See the full update log for version history and version-to-version changes.
- Response formatting was cleaned up for a simpler, consistent envelope.
- People and job search ID types are updated to string IDs across search results and entity detail lookups.
- Public search result windows are adjusted to
100results per request. - Scholar search result sizing is updated to support explicit
sizevalues up to100. - Job detail and
_sourceselection now follow public detail field defaults for public API keys. GET /v1/versionis supported alongsideGET /version.
System
Use system routes to check the deployed API version and the authenticated API key status.
Version
curl -s https://mira-api.openjobs-ai.com/version{
"code": 200,
"msg": "ok",
"data": {
"version": "2.1.0"
}
}API Key Status
curl -X GET "https://mira-api.openjobs-ai.com/auth/key/status" \
-H "Authorization: Bearer $MIRA_KEY"Response data includes key_id, key_prefix, user_id, active, scopes, rpm_limit, quota_total, quota_used, quota_remaining, and expires_at.
Quick Start: Agent-Skills
The fastest way to use the Mira API is through OpenClaw Skills — Markdown-based instruction files that give your AI assistant (Claude, GPT, Gemini, etc.) full access to talent search, grading, and enrichment directly from the chat interface. No boilerplate. No manual tool wiring.
OpenJobsAI / openjobs-openclaw-skills
github.com/OpenJobsAI/openjobs-openclaw-skills
Available Skills
openjobs-people-search
ClawhHubSearch, discover, and retrieve professional candidate profiles
- ·Structured search with explicit filters
- ·Profile lookup by LinkedIn URL
- ·Side-by-side candidate comparison
- ·Talent pool analytics
- ·Unlock contact emails
openjobs-people-match
ClawhHubEvaluate candidate-job fit with AI scoring
- ·Grade a single CV against a JD (0–100)
- ·Bulk-grade up to 20 candidates
- ·Ranked results by fit score
Installation
npx — recommended
npx skills install OpenJobsAI/openjobs-openclaw-skillsOpenClaw / ClawhHub
Inside any OpenClaw-compatible agent, say Install skills: OpenJobsAI/openjobs-openclaw-skills to install both skills at once. Or install individually via ClawhHub:
clawhub install openjobs-people-search
clawhub install openjobs-people-matchClaude Code
# Via terminal
claude plugin marketplace add OpenJobsAI/openjobs-openclaw-skills
# Inside the chat
/plugin marketplace add OpenJobsAI/openjobs-openclaw-skillsAuthentication
After installation, set your MIRA_KEY environment variable so the skill can authenticate automatically:
export MIRA_KEY="mira_xxxxxxxxxxxx"Get your key from the API Keys page. The skill reads $MIRA_KEY from the environment and passes it automatically as a Bearer token on every request.
Quick Start: Direct API Call
Prefer calling the REST API directly? Set $MIRA_KEY to your API key, then make your first request:
export MIRA_KEY="mira_xxxxxxxxxxxx"
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-grade" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"cv": "10 years Python backend development, AWS certified",
"jd": "Senior Python engineer with cloud experience"
}'All responses follow a unified envelope format:
{ "code": 200, "msg": "ok", "data": { ... } }"data": null. For example: { "code": 401, "msg": "API key not found", "data": null }Authentication
All requests must include your API key as a Bearer token in the Authorization header:
curl -X POST "https://mira-api.openjobs-ai.com/v1/..." \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json"| Header | Value | Description |
|---|---|---|
| Authorization | Bearer $MIRA_KEY | Required. Your Mira API key (starts with mira_) |
| Content-Type | application/json | Required for all POST requests with a body |
Natural Language People Search
/v1/people-searchNatural-language candidate search. Mira converts the request into a controlled, policy-filtered search over approved public profile fields and returns profile IDs only.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string (1-5000 chars) | Yes | Natural-language people search query |
| size | integer (1-100) | No | Maximum profile IDs to return. Defaults to 100 |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-search" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "search all us data engineers",
"size": 100
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"profile_ids": ["PavstrIWX_ZuAc2AOAZXHA", "ItGafMDFS3n8phCHDDyvEA"]
}
}/entity/v1/profiles/detail-by-id after search to fetch full profile documents. For structured filters, use /v1/people-fast-search.Search Candidates
/v1/people-fast-searchStructured field search that bypasses AI parsing for faster results. It returns string profile IDs only. At least one search filter is required. Returns up to 100 profile IDs for public API keys.
Request Parameters
All filter fields are optional, but at least one search condition must be provided. size controls result count and does not count as a search condition.
Basic Info
| Parameter | Type | Description |
|---|---|---|
| size | integer (1-100) | Maximum profile IDs to return. Defaults to 100 |
| full_name | string (max 200) | Full name (exact match) |
| headline | string (max 200) | Professional headline (fuzzy match) |
| is_working | boolean | Currently employed (exact match) |
| is_decision_maker | boolean | Is a decision maker |
Location
| Parameter | Type | Description |
|---|---|---|
| country | string (max 100) | Country (exact match). Use full name: "United States" not "US" |
| city | string (max 100) | City name (exact match) |
| state | string (max 100) | State or province (exact match). Use full name: "California" not "CA" |
Current Position
| Parameter | Type | Description |
|---|---|---|
| active_title | string (max 200) | Current job title (fuzzy match) |
| management_level | string (max 50) | Management level (exact match). See valid values |
| active_department | string (max 200) | Current department (fuzzy match) |
Work Experience
| Parameter | Type | Description |
|---|---|---|
| experience_months_min | integer (≥0) | Minimum total experience (months) |
| experience_months_max | integer (≥0) | Maximum total experience (months) |
| company_name | string (max 200) | Company name (phrase match) |
| industry | string (max 100) | Industry (exact match). See valid values |
| company_type | string (max 50) | Company type (exact match). See valid values |
| level | string (max 50) | Seniority level (exact match). See valid values |
| role | string (max 50) | Role type (exact match). See valid values |
| skills | string[] (max 20 items) | Required skills list |
| skills_operator | string | Skill matching logic: AND or OR (default: AND) |
| certifications | string (max 200) | Certifications (fuzzy match, e.g. "AWS", "PMP") |
| languages | string[] (max 20 items) | Required languages (all must match) |
Education
| Parameter | Type | Description |
|---|---|---|
| degree_level_min | integer (≥0) | Minimum degree level |
| institution_name | string (max 200) | Institution name (fuzzy match) |
| major | string (max 200) | Major or field of study (fuzzy match) |
| institution_ranking_max | integer (≥1) | Max institution ranking (e.g. 100 = Top 100) |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-fast-search" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"country": "United States",
"skills": ["Python", "AWS"],
"skills_operator": "AND",
"experience_months_min": 60,
"is_working": true,
"size": 100
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"profile_ids": ["PavstrIWX_ZuAc2AOAZXHA", "ItGafMDFS3n8phCHDDyvEA"]
}
}/entity/v1/profiles/detail-by-id. Entity detail endpoints accept up to 50 string type IDs or LinkedIn URLs per request.| HTTP Status | Reason |
|---|---|
| 400 | No filter condition provided |
| 422 | Invalid parameter format or value |
Profile Details
/entity/v1/profiles/detail-by-idFetch full candidate profile documents after search returns string profile IDs. Detail endpoints are capped at 50 string type IDs or LinkedIn URLs per request so clients can batch and page explicitly.
Lookup by Profile ID
| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_ids | string[] (1-50 items) | Yes | String profile IDs returned by people search endpoints |
| _source / source | array, object, or boolean | No | Elasticsearch source selection. Defaults to Mira profile detail fields |
curl -X POST "https://mira-api.openjobs-ai.com/entity/v1/profiles/detail-by-id" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"profile_ids": ["PavstrIWX_ZuAc2AOAZXHA", "ItGafMDFS3n8phCHDDyvEA"],
"_source": ["profile_id", "full_name", "active_experience_title", "address", "skills"]
}'Lookup by LinkedIn URL
/entity/v1/profiles/detail-by-linkedin-url| Parameter | Type | Required | Description |
|---|---|---|---|
| linkedin_urls | string[] (1-50 items) | Yes | LinkedIn profile URLs to fetch |
| _source / source | array, object, or boolean | No | Elasticsearch source selection. Defaults to Mira profile detail fields |
curl -X POST "https://mira-api.openjobs-ai.com/entity/v1/profiles/detail-by-linkedin-url" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_urls": ["https://www.linkedin.com/in/xxx"],
"_source": ["profile_id", "full_name", "address", "active_experience_title"]
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"total": 2,
"found": 1,
"not_found": ["ItGafMDFS3n8phCHDDyvEA"],
"results": [
{
"profile_id": "PavstrIWX_ZuAc2AOAZXHA",
"full_name": "Jane Doe",
"active_experience_title": "Data Engineer",
"address": { "state": "California", "country": "United States" },
"skills": ["python", "sql", "aws"]
}
]
}
}Grade Candidate
/v1/people-gradeSubmit a candidate CV and job description. AI evaluates the match and returns a score (0–100) with reasoning.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| cv | string (1–5000 chars) | Yes | Candidate resume text |
| jd | string (1–5000 chars) | Yes | Job description text |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-grade" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"cv": "10 years Python backend development...",
"jd": "Senior Python engineer with cloud experience..."
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"total_score": {
"rating": 85,
"description": "- Strong Python background with 10+ years directly matching the requirement.\n- Extensive backend and cloud experience aligns well with the role.\n- Financial services exposure is an added advantage."
}
}
}rating is an integer from 0 to 100. description contains the AI reasoning behind the score.Analytics
/v1/people-statsAggregate analytics on the candidate database. Supports group-by counts, numeric statistics (min/max/avg/sum), and histogram bucketing. At least one of group_by, stats_fields, or histogram_fields must be provided.
Request Parameters
All are supported for narrowing the dataset, excluding search-only size. Additionally, at least one aggregation field is required:
| Parameter | Type | Limit | Description |
|---|---|---|---|
| group_by | string[] | max 5 | Group by dimension and count results |
| stats_fields | string[] | max 3 | Numeric statistics: min/max/avg/sum |
| histogram_fields | object[] | max 2 | Histogram bucketing by interval |
The histogram_fields object accepts:
| Field | Type | Description |
|---|---|---|
| field | string | Field name to bucket (e.g. experience_months) |
| interval | integer | Bucket size (optional; defaults vary by field) |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-stats" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"country": "United States",
"group_by": ["management_level"],
"stats_fields": ["experience_months"]
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"total_matched": 10000,
"aggregations": {
"management_level": [
{ "key": "Specialist", "count": 3800000 },
{ "key": "Manager", "count": 720000 },
{ "key": "Senior", "count": 445000 },
{ "key": "Director", "count": 330000 }
],
"experience_months_stats": {
"min": 0, "max": 480, "avg": 96.3, "sum": 700000000
}
}
}
}Compare Candidates
/v1/people-compareCompare multiple candidates side by side. Returns structured data including current position, highest education, skills, and languages.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| linkedin_urls | string[] (2–10 items) | Yes | LinkedIn URLs of candidates to compare |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-compare" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_urls": [
"https://www.linkedin.com/in/xxx",
"https://www.linkedin.com/in/yyy"
]
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"total_requested": 2,
"total_found": 2,
"not_found": [],
"comparisons": [
{
"linkedin_url": "https://www.linkedin.com/in/xxx",
"full_name": "Jane Doe",
"headline": "Senior Python Engineer | Backend | Cloud",
"location": { "country": "United States", "city": "San Francisco" },
"is_working": true,
"total_experience_months": 120,
"current_position": {
"title": "Senior Software Engineer",
"company": "Acme Corp",
"industry": "Software Development"
},
"highest_education": {
"degree": "Bachelor of Science, Computer Science",
"institution": "State University",
"major": "Computer Science"
},
"skills": ["python", "fastapi", "postgresql", "docker", "aws"],
"languages": ["English"],
"is_decision_maker": false
},
{
"linkedin_url": "https://www.linkedin.com/in/yyy",
"full_name": "John Smith",
"headline": "Backend Engineer | Python | AWS",
"location": { "country": "United States", "city": "Austin" },
"is_working": true,
"total_experience_months": 144,
"current_position": {
"title": "Senior Backend Engineer",
"company": "Tech Solutions Inc",
"industry": "IT Services and IT Consulting"
},
"highest_education": {
"degree": "Bachelor of Engineering, Computer Science",
"institution": "University of Technology",
"major": "Computer Science"
},
"skills": ["python", "aws", "docker", "postgresql", "kubernetes"],
"languages": ["English"],
"is_decision_maker": false
}
]
}
}Bulk Grade
/v1/people-bulk-gradeGrade multiple candidates against a single job description in one request. Results are sorted by score in descending order.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| linkedin_urls | string[] (1–20 items) | Yes | Candidate LinkedIn URLs to grade |
| jd | string (10–5000 chars) | Yes | Job description text |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-bulk-grade" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_urls": [
"https://www.linkedin.com/in/xxx",
"https://www.linkedin.com/in/yyy"
],
"jd": "Senior Python Engineer with 5+ years experience in backend development and AWS..."
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"jd_preview": "Senior Python Engineer with 5+ years experience in backend development and AWS...",
"total_requested": 2,
"total_graded": 2,
"total_failed": 0,
"not_found": [],
"rankings": [
{
"linkedin_url": "https://www.linkedin.com/in/xxx",
"total_score": {
"rating": 92,
"description": "- Strong Python background with 10+ years directly matching the requirement.\n- Extensive backend and AWS experience aligns well with the role."
},
"error": null
},
{
"linkedin_url": "https://www.linkedin.com/in/yyy",
"total_score": {
"rating": 74,
"description": "- Meets the Python experience requirement.\n- AWS and DevOps skills are relevant but backend focus is less prominent."
},
"error": null
}
]
}
}total_score will be null, error will contain the error message, and the entry will appear at the bottom of the rankings list.Unlock Contacts
/v1/people-unlockRetrieve email contact information for candidates by LinkedIn URL. Each URL consumes 200 quota points. Quota is checked and deducted atomically in a single operation.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| linkedin_urls | string[] (1-50 items) | Yes | LinkedIn URLs to unlock. Each URL costs 200 quota points. |
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-unlock" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_urls": [
"https://www.linkedin.com/in/xxx",
"https://www.linkedin.com/in/yyy"
]
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"list": [
{
"linkedinUrl": "https://www.linkedin.com/in/xxx",
"personEmail": "jane.doe@gmail.com",
"workEmail": "jane.doe@acme.com"
},
{
"linkedinUrl": "https://www.linkedin.com/in/yyy",
"personEmail": "john.smith@gmail.com",
"workEmail": null
}
]
}
}| HTTP Status | Reason |
|---|---|
| 402 | Insufficient quota (need N points, have M) |
Search Jobs
/v1/job-fast-searchStructured field search for job positions. Queries the job database directly and returns string job IDs only. At least one filter field is required. Returns up to 100 job IDs for public API keys. Only active, non-deleted jobs are returned.
Request Parameters
All filter fields are optional, but at least one search condition must be provided. size controls result count and does not count as a search condition.
| Parameter | Type | Description |
|---|---|---|
| size | integer (1-100) | Maximum job IDs to return. Defaults to 100 |
| title | string (max 200) | Job title (fuzzy match) |
| description | string (max 500) | Job description keywords (fuzzy match) |
| company_name | string (max 200) | Company name (phrase match) |
| seniority | string (max 100) | Seniority level (exact match, e.g. "Entry level", "Mid-Senior level") |
| employment_type | string (max 100) | Employment type (exact match, e.g. "Full-time", "Part-time") |
| location | string (max 200) | Job location (exact match) |
| country | string (max 100) | Country (exact match) |
| industry | string (max 200) | Industry (exact match) |
| function | string (max 200) | Job function (fuzzy match) |
| time_posted_from | string (ISO 8601) | Posted after (e.g. "2025-01-01") |
| time_posted_to | string (ISO 8601) | Posted before (e.g. "2025-12-31") |
curl -X POST "https://mira-api.openjobs-ai.com/v1/job-fast-search" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Python Engineer",
"country": "United States",
"employment_type": "Full-time",
"seniority": "Mid-Senior level",
"size": 100
}'Response Example
{
"code": 200,
"msg": "ok",
"data": {
"job_ids": ["01CWlhuF85DP45jLrytvOw", "0FVdRCfvTIaZPxHk25jMeA"]
}
}/entity/v1/jobs/detail-by-id. The detail endpoint accepts up to 50 string job IDs per request.Job Detail by ID
/entity/v1/jobs/detail-by-id| Parameter | Type | Required | Description |
|---|---|---|---|
| job_ids | string[] (1-50 items) | Yes | String job IDs returned by job search |
| _source / source | array, object, or boolean | No | Elasticsearch source selection. Defaults to public job detail fields |
curl -X POST "https://mira-api.openjobs-ai.com/entity/v1/jobs/detail-by-id" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"job_ids": ["01CWlhuF85DP45jLrytvOw", "0FVdRCfvTIaZPxHk25jMeA"],
"_source": ["uu_job_id", "title", "company_name", "location", "experience_level"]
}'| HTTP Status | Reason |
|---|---|
| 400 | No filter condition provided |
| 422 | Invalid parameter format or value |
Search Scholars
/v1/scholar-fast-searchStructured field search for academic scholars. At least one filter field is required. Returns up to 100 results for public API keys. Sensitive fields (email, phone, internal IDs) are excluded from the response.
Request Parameters
All fields are optional, but at least one must be provided.
Basic Info & Location
| Parameter | Type | Description |
|---|---|---|
| full_name | string (max 200) | Full name (exact match) |
| size | integer (1-100) | Maximum scholar profiles to return. Defaults to 100 |
| headline | string (max 200) | Professional headline (fuzzy match) |
| country | string (max 100) | Country (exact match) |
| city | string (max 100) | City (exact match) |
Position & Affiliation
| Parameter | Type | Description |
|---|---|---|
| current_position | string (max 200) | Current position title (fuzzy match) |
| current_position_type | string (max 100) | Current position type (exact match) |
| active_title | string (max 200) | Active experience title (fuzzy match) |
| management_level | string (max 50) | Management level (exact match) |
| affiliations | string (max 200) | Affiliated institution/organization (fuzzy match) |
Research Areas & Skills
| Parameter | Type | Description |
|---|---|---|
| areas | string[] (max 20 items) | Research areas |
| areas_operator | string | Area matching logic: AND or OR (default: AND) |
| skills | string[] (max 20 items) | Skills |
| skills_operator | string | Skill matching logic: AND or OR (default: AND) |
Academic Metrics
| Parameter | Type | Description |
|---|---|---|
| total_citations_min | integer (≥0) | Minimum total citations |
| total_citations_max | integer (≥0) | Maximum total citations |
| h_index_min | integer (≥0) | Minimum h-index (all time) |
Education & Articles
| Parameter | Type | Description |
|---|---|---|
| university | string (max 200) | University name (fuzzy match) |
| major | string (max 200) | Major or field of study (fuzzy match) |
| degree_level_min | integer (≥0) | Minimum degree level |
| article_title | string (max 500) | Article title keyword (fuzzy match) |
| article_publication | string (max 200) | Publication/journal name (fuzzy match) |
| experience_months_min | integer (≥0) | Minimum total experience in months |
| experience_months_max | integer (≥0) | Maximum total experience in months |
curl -X POST "https://mira-api.openjobs-ai.com/v1/scholar-fast-search" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"areas": ["Machine Learning", "Natural Language Processing"],
"areas_operator": "AND",
"country": "United States",
"h_index_min": 20,
"size": 100
}'Response Example
{
"code": 200,
"msg": "ok",
"data": [
{
"full_name": "Dr. Jane Smith",
"headline": "Associate Professor of Computer Science",
"location_struct": {
"country": "United States",
"city": "Stanford"
},
"current_position": "Associate Professor",
"current_position_type": "Faculty",
"affiliations": "Stanford University",
"areas": ["Machine Learning", "Natural Language Processing", "Deep Learning"],
"skills": ["Python", "TensorFlow", "PyTorch"],
"total_citations": 15200,
"h_index": { "all": 42 },
"education": [
{
"university": "MIT",
"major": "Computer Science",
"degree_level": 3
}
],
"articles": [
{
"title": "Attention Mechanisms in Neural Networks",
"publication": "NeurIPS 2023"
}
]
}
]
}data is a direct array of scholar profiles, up to 100 results for public API keys.| HTTP Status | Reason |
|---|---|
| 400 | No filter condition provided |
| 422 | Invalid parameter format or value |
OpenJobs CLI
Deprecated
OpenJobs CLI is no longer maintained
The CLI package is kept here as a deprecated reference only. New integrations should use the REST API, MCP Protocol, or OpenJobs agent skills.
| Package | Status | Recommended path |
|---|---|---|
| @openjobs-ai/cli | Deprecated; no longer maintained | Use REST API, MCP Protocol, or agent skills |
MCP Protocol
The Mira API supports the Model Context Protocol (MCP), enabling direct integration with AI assistants like Claude.
| Transport | URL | Protocol Version |
|---|---|---|
| Streamable HTTP | https://mira-api.openjobs-ai.com/mcp | MCP 2025-03-26 |
| SSE (legacy) | https://mira-api.openjobs-ai.com/sse | MCP 2024-11-05 |
Initialize MCP Session
curl -X POST https://mira-api.openjobs-ai.com/mcp \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": { "name": "my-agent", "version": "1.0" }
}
}'Claude Code Setup
Connect the Mira API to Claude Code as an MCP server:
claude mcp add --scope user --transport http \
mira-api-http \
https://mira-api.openjobs-ai.com/mcp \
--header "Authorization: Bearer $MIRA_KEY"--scope project instead of --scope user to restrict the server to the current project only.Claude Desktop
Add the Mira API to your claude_desktop_config.json to use Mira tools directly inside Claude Desktop:
{
"mcpServers": {
"mira-api": {
"url": "https://mira-api.openjobs-ai.com/mcp",
"headers": {
"Authorization": "Bearer $MIRA_KEY"
}
}
}
}$MIRA_KEY with your actual API key value in the config file.Search Filters Reference
Exact match enum values for the endpoint. These strings must be passed exactly as listed.
Valid values for role
Administrative, C-Suite, Consulting, Customer Service, Design, Education,
Engineering and Technical, Finance & Accounting, Human Resources, Legal,
Marketing, Medical, Operations, Other, Product, Project Management,
Real Estate, Research, Sales, TradesValid values for level
C-Level, Director, Founder, Head, Intern, Manager, Owner, Partner,
President/Vice President, Senior, SpecialistValid values for company_type
Educational, Government Agency, Nonprofit, Partnership,
Privately Held, Public Company, Self-Employed, Self-OwnedValid values for industry
Accommodation Services, Administrative and Support Services, Construction,
Consumer Services, Education, Entertainment Providers,
Farming, Ranching, Forestry, Financial Services, Government Administration,
Holding Companies, Hospitals and Health Care, Manufacturing,
Oil, Gas, and Mining, Professional Services,
Real Estate and Equipment Rental Services, Retail,
Technology, Information and Media,
Transportation, Logistics, Supply Chain and Storage,
Utilities, WholesaleAnalytics Fields Reference
Available fields for the endpoint aggregation parameters.
Available group_by dimensions
country, city, state,
active_title, active_department, management_level,
job_title, company_name, industry, company_type, level, role,
exp_country, exp_city,
degree_level, degree_str, institution_name, major, institution_country, institution_city,
skills, is_working, is_decision_maker, languagesAvailable stats_fields
experience_months, exp_duration, gpa, institution_ranking, company_employees_countAvailable histogram_fields
| Field | Default Interval |
|---|---|
| experience_months | 12 |
| institution_ranking | 50 |
Error Codes
All error responses use the unified format: { "code": 4xx/5xx, "msg": "<error message>", "data": null }
| HTTP Status | code | Description |
|---|---|---|
| 400 | 400 | Invalid or missing request parameters |
| 401 | 401 | Missing or invalid Authorization header / API key not found |
| 402 | 402 | Quota exhausted (need N points, have M) |
| 403 | 403 | API key disabled, expired, or insufficient scope |
| 404 | 404 | Route not found |
| 422 | 422 | Invalid parameter format or value |
| 429 | 429 | Rate limit exceeded (RPM) |
| 503 | 503 | Feature unavailable |
| 500 | 500 | Internal server error |
Sunset Adjustments
These older public workflows are tracked as sunset adjustments in Mira API 2.1.0. Use the replacement route shown below.
| Sunset adjustment | Replacement |
|---|---|
| POST /v1/people-search/profile-ids | POST /v1/people-search |
| POST /v1/people-search/profiles | POST /v1/people-search, then POST /entity/v1/profiles/detail-by-id |
| POST /v1/people-lookup | POST /entity/v1/profiles/detail-by-linkedin-url |